Bao cao hash injection
-
Upload
phanleson -
Category
Entertainment & Humor
-
view
2.091 -
download
0
description
Transcript of Bao cao hash injection
Báo cáo Hash Injection
Thành viên :
Phạm Minh LộcĐào Văn TúĐỗ Hồng PhúcNguyễn Ngọc Cương
Tóm tắt
Windows Hash
Microsoft Authentication
Cached Credentials
Hash Dumpers
Demo
Windows Hash
Khi ta tạo một password cho một tài khoản,password sẽ không được lưu trữ trong hệ thống dưới dạng clear text. Việc lưu password dưới dạng clear text không phải là một ý tưởng hay bởi vì nếu một người nào đó truy xuất được tới file password thì sẽ biết được mọi tài khoản lưu trong hệ thống.
Nhưng có một điều là nếu không có password trên hệ thống thì không thể chứng thực một user login
Xung quanh vấn đề này,những người phát triển hệ thống đã hash password với một one way hash và lưu nó trên hệ thống.khi một người log in,password nhập vào sẽ được hash và đem kết quả so sánh với giá trị hash đã được lưu trữ,nếu đúng thì sẽ cho phép log in.
Một one way hash là một hàm chuyển đổi một input text string thành một output text string duy nhất,tuy nhiên bởi vì là hàm một chiều nên khi nhận vào output string sẽ không có hàm nào chuyển ngược lại input string ban đầu.chỉ có một cách duy nhất là thử tất cả các input string có thể cho đến khi được output string đúng với output string cần tìm.
Với lý do đấy nên nếu một hacker chiếm lấy được hash database họ cũng không thể ngay lập tức sử dụng nó để break hệ thống bởi vì password trước tiên cần phải được crack.nếu một password đủ dài và phức tạp nó có thể khiến cho hacker mất rất nhiều thời gian để crack ( hàng triệu năm đối với một password tốt).
Microsoft Authentication
Hệ thống Windows hiện đang sử dụng một hoặc nhiều bốn phương pháp xác thực khác nhau.
LanManager (LM) NT Lan Manager (NTLM) NT Lan Manager 2 (NTLMv2) Kerberos
LanManager (LM)
LAN Manager là một trong những định dạng mà Microsoft LAN Manager và Microsoft Windows phiên bản trước để sử dụng Windows Vista để lưu trữ các mật khẩu người dùng có ít hơn 15 ký tự.Đây là loại băm là loại duy nhất của mã hóa được sử dụng trong Microsoft LAN Manager,vì thế mà có tên LM, và phiên bản của Windows đến Windows Me. Nó cũng được hỗ trợ trong nhiều phiên bản Windows gần đây cho tương thích,mặc dù trong Windows Vista và sau đó nó một cách rõ ràng phải được kích hoạt để sử dụng như nó bị tắt theo mặc định.
LanManager (LM) LM là cơ chế băm mật khẩu lâu đời nhất và kém an toàn nhất
của Windows. Mật khẩu được chia thành hai khối 7 ký tự. Mỗi chuỗi băm một cách độc lập và nối 2 chuỗi băm lại. Kết quả là một kẻ xâm nhập chỉ cần crack hai chuỗi băm 7 ký tự này và chỉ cần xem xét các ký tự hoa, số, và các ký hiệu để phá vỡ mật khẩu. Điều này là rất dễ dàng để làm bằng cách sử dụng công nghệ ngày nay. Cơ chế được sử dụng cho Window 3.1/95/98
Một khó khăn với LM như: về mặt xác thực là băm được gửi qua mạng với cơ chế mã hóa thấp khi làm một tên đăng nhập vào hệ thống mạng. Cơ chế này làm cho nó có thể nắm bắt được chuỗi băm bằng cách sniffing mạng.
NT Lan Manager (NTLM)
Chuỗi băm được tạo ra bằng cách băm mật khẩu người dùng với MD4. Đây là một băm mạnh hơn nhiều so với LM, cho phép sử dụng của tập ký tự Unicode, và nó không được chia thành ngắn hơn. Để tăng thêm an ninh, đăng nhập với NTLMv1 là ta có thể thiết lập cho chuỗi không bao giờ được gửi qua mạng.
NT Lan Manager (NTLM) NLTM là một giao thức xác thực(authentication protocol)
của microsoft,sử dụng để xác nhận người dùng trên mạng hoặc tại máy tính đơn.đối với hệ thống domain thi khi xác thực,NTLM sử dụng các thông tin tên user,tên domain và 1 kết quả đã hash(băm) password để kiểm tra xem người dùng có hợp lệ không.
Để tìm hiểu sâu hơn về NTLM các bạn tham khảo:
http://en.wikipedia.org/wiki/NTLMhttp://msdn.microsoft.com/en-us/library/aa378749.aspx
NT Lan Manager 2 (NTLMv2) Sử dụng băm như NTLMv1 nhưng với một cơ chế
an toàn hơn nhiều để xác thực người nào đó qua mạng.
Chiều dài chuỗi băm dài hơn nhiều
Window NT/2000 để xác thực LAN và MAN dùng MD4(NTLMv1), HMAC-MD5(NTLMv2)
Microsoft đã thông qua Kerberos như giao thức xác thực ưa thích cho Windows 2000 và Windows 2003 Active Directory domains.Kerberos thường được sử dụng khi một khách hàng thuộc về một miền Windows Server, hoặc nếu một mối quan hệ tin cậy với một miền Windows Server được thiết lập bằng cách khác (như Linux để xác thực Windows AD).
NTLM vẫn được sử dụng trong các tình huống sau đây: -Các khách hàng được chứng thực vào một máy chủ sử dụng
một địa chỉ IP. -Các khách hàng được chứng thực vào một máy chủ mà thuộc
về một khu rừng khác nhau Active Directory, hoặc không thuộc về một miền.
-Không tồn tại tên miền Active Directory (thường được gọi là "nhóm làm việc" hay "peer-to-peer").
-Trong trường hợp một tường lửa nếu không sẽ hạn chế các cổng yêu cầu của Kerberos (trong đó có một số khá)
Kerberos Kerberos là một giao thức mật mã dùng để xác thực
trong các mạng máy tính hoạt động trên những đường truyền không an toàn. Giao thức Kerberos có khả năng chống lại việc nghe lén hay gửi lại các gói tin cũ và đảm bảo tính toàn vẹn của dữ liệu. Mục tiêu khi thiết kế giao thức này là nhằm vào mô hình chủ - khách(client-server) và đảm bảo nhận thực cho cả hai chiều.
Giao thức được xây dựng dựa trên mật mã đối xứng và cần đến một bên thứ ba mà cả hai phía tham gia giao dịch tin tưởng
Kerberos authentication dùng một server trung tâm để kiểm tra việc xác thực user và cấp phát thẻ thông hành(service tickets )để user có thể truy cập vào tài nguyên.kerberos là một phương thức rất an toàn trong authentication bởi vì chúng dùng cấp độ mã hóa rất mạnh. Kerberos cũng dựa trên độ chính xác của thời gian xác thực giữa Server và Client Computer, do đó cần đảm bảo có một time server hoặc authenticating servers được đồng bộ time từ các Internet time server.
Kerberos là nền tảng xác thực chính của nhiều OS như Unix, Windows
Để có tương thích với các hệ thống Windows cũ hơn, hầu hết các hệ thống mới đều có tất cả các cơ chế xác thực như trên.LM được kích hoạt để cho phép kết nối Windows với nhóm làm việc, Windows 95 và Windows 98. Nếu bạn không phải chia sẻ một mạng lưới với các hệ thống này, bạn không cần nó và nó phải được vô hiệu hoá.
Windows Local và Group Policy keys có sẵn để kiểm soát được các phiên bản LanMan của một hệ thống có được chấp nhận hay không.
Nguyên lý xác thực
Cached Credentials
Khi một tài khoản domain logon vào một máy tính nào đó trong miền thì password khi nhập vào sẽ được hash và cache lại trên máy tính đó.
Cached Credentials được lưu trữ trong Registry tại
HKEY_LOCAL_MACHINE\SECURITY\CACHE với các giá trị tương ứng là NL$1,NL$2 …chứa thông tin các user đã logon trước đó
Cached Credentials sẽ được sử dụng khi một domain controller không hoạt động và dùng để xác nhận một password,khi một user cung cấp một password để logon vào domain thì password đó sẽ được hash và đem so sánh với giá trị hash của password đã được lưu trước đó trong cache,nếu đúng thì user đó sẽ được phép log on,còn ngược lại thì không.
Hash Dumpers
Là các tools dùng để extract LM hash và NTLM hash từ SAM Database (là một phần của registry dùng để quản lý các thông tin bảo mật).
Ngoài ra chúng còn có thể lấy ra các hash được lưu trữ trong hệ thống từ những lần đăng nhập trước đó
Để nâng cao tính bảo mật thì file SAM sẽ được mã hóa nhưng hầu hết các hash dumpers biết làm thế nào để giải mã nó
Một điều cần lưu ý là để chạy các hash dumper thì cần đến các user đặc quyền như administrator
Demo 1_Mô hình Domain
Mô hình gồm 3 máy
Máy 1 nâng cấp lên Domain Controller
Máy 2 sử dụng HDH Windows join vào domain
Máy 3 đóng vai trò là máy Hacker cùng mạng với máy 1,2 nhưng không join vào domain
Mô tả quá trình tấn công
Hacker thông qua việc chiếm được
username và password của tài khoản admin
cục bộ trên máy Client có thể mạo danh bất
kì tài khoản user domain nào log on vào máy
Client để truy xuất đến domain controller lấy dữ liệu về mà không cần username và password của tài khoản đó
Điều kiện tiên quyết
1. Máy Client join vào Domain
2. Máy Hacker chiếm được username và password tài khoản admin cục bộ trên máy Client
3. User domain log on trên máy Client
Các Tools cần dùng
Psexec.exe
Gsecdump.exe
Msvctl.exe
Psexec.exe
Đây là tiện ích giống như telnet và là chương trình quản lý từ xa giống Symantec's PC Anywhere
Psexec có thể thực thi chương trình trên và tương tác dòng lệnh trên remote systems
psexec [\\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,... ] cmd [arguments]
-s :chạy một remote process trên system accout
-u: username sẽ login vào remote system -p: password của username -c: copy 1 chương trình đến remote system
để thưc thi
Gsecdump.exe
Lấy ra hash trong file SAM và cache của domain credentials, ngoài ra nó còn có thể lấy ra LSA, Wireless, và Active logon sessions
Gsecdump không có khả năng remote system,để chạy nó trên một remote system thì cần ta cần sử dụng thông qua psexec
gsecdump [options] options:
-h [ --help ] show help-a [ --dump_all ] dump all secrets -l [ --dump_lsa ] dump lsa secrets -w [ --dump_wireless ] dump mircosoft wireless connections -u [ --dump_usedhashes ] dump hashes from active logon sessions -s [ --dump_hashes ] dump hashes from SAM/AD
Msvctl.exe
Về cơ bản là một chương trình dùng để log in vào một hệ thống bằng cách sử dụng hash thay cho password
Vd : C:\>msvctl
ibuetler::25b425XXXXXXXXXXXXXXXXec5 cabcc:fa1d701b2YYYYYYYYYYYYYYYY715b5::: run cmd.exe
Tại máy Hacker dùng psexec để chạy chương trình gsecdump.exe từ xa trên máy Client
Chương trình gsecdump sẽ lấy ra toàn bộ cached credentials được lưu trên máy workstation
Máy Client có tài khoản admin cục bộ là administrator và password là 123
Dùng msvctl để đăng nhập với quyền của userdomain3 thông qua giá trị hash của nó
Cửa sổ cmd với quyền hiện tại của userdomain3
Map 1 thư mục chia sẽ trên server về ổ đĩa bất kì
Xem các thư mục chia sẽ trên máy DC
Sử dụng lệnh net use để map thư mục share về thành ỗ đỉa cục bộ
Tùy theo quyền của userdomain3 trên thư mục chia sẽ mà ta có quyền tương ứng với ổ đĩa map về
Tạo thư mục tailieu
trong ổ đĩa Z
Chạy lại msvctl với quyền của user admindomain (thuộc nhóm DomainAdmin của miền)
Lúc này với quyền của user admindomain ta có thể map ổ đĩa C: trên máy server về
Di chuyển đến thư mục chứa các tools
Thực hiện lệnh gsecdump -s để lấy ra toàn bộ giá trị hash của các user lưu trong AD
Với quyền hiện tại của admindomain ta không cần nhập username và password của máy Domain Controller
Ta cũng có thể tạo user trên máy server
Tạo 1 backdoor trên máy domain controller Bước 1: Map 1 thư mục share trên DC về
làm ổ đĩa cục bộ (ổ đĩa i )
Bước 2: Copy chương trình netcat vào ổ đĩa i( lúc này trên máy DC cũng sẽ xuất hiện file netcat tại thư mục share )
Bước 3: Dùng chương trình psexec để chạy netcat trên máy DC
Copy netcat lên máy domain controller
Copy netcat vào thu muc fileserver trên DC
File nc.exe( netcat) đã được copy trong thư mục fileserver trên may DC
Dùng psexec để chạy chương trình netcat trên máy DC
Mở port 3333 trên máy DC
Từ máy Hacker dùng netcat truy cập vào port 3333 trên máy DC
Hacker có thể thực hiện các thao tác như trên máy DC
Hoặc ta cũng có thể telnet đến máy DC với port 3333
Cửa sổ telnet hiện ra,từ đây ta cũng có thể thực hiện toàn bộ thao tác trên máy DC
Tại máy DC dùng lệnh netstat để xem các kết nối trên máy tính
Ta thấy port 3333 hiện đang lắng nghe
Port 3333 đang được lắng nghe trên máy DC
Cách phòng chống
Trong demo này ta thấy để phòng chống thì cách tốt nhất là ta tắt cached credential trên máy đăng nhập để hacker không thể lấy ra hash của các user domain đã đăng nhập trước đó
Để disable cached credentials thì ta sẽ có hai cách
Để disable cached trên các máy cụ thể trong domain thì ta thực hiện trên máy đó.
Vào trong registry tìm đến khóa
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\Winlogon\
ValueName: CachedLogonsCount Data Type: REG_SZ Values: 0 - 50
Giá trị từ 0-50 ở đây có nghĩa là số lượng user logon mà máy sẽ cached lại
Để disable thì ta chỉ cần chỉnh value về giá trị 0
Để disable cached trên toàn bộ các máy trong domain thì ta tùy chỉnh policy trên máy domain controller
Giới Thiệu về một số tools tấn công trong Hash-InjectionWhosthere
Công cụ này sẽ liệt kê ra danh sách phiên đăng nhập của người dùng(user:domain:mảng băm LM và NT )
Để chạy được công cụ này thì bạn phải đang ở quyền Admin của máy đang chạy.
Công cụ này rất phổ biến chỉ cần bạn đợi người quản trị viên đăng nhập vào máy chủ bị xâm nhập của máy để bàn từ xa.tại điểm đó chỉ cần bạn chạy whosthere.exe là sẽ thấy (user:domain:NTLM)
Iam
Cấu trúc câu lệnh của tool Iam Là: Iam.exe -r cmd.exe –b –h username:Domain hay tên
địa chỉ Ip của máy đích(\\192.168.1.1):NT:LM
Ví dụ:iam.exe –r cmd.exe –b –h
u1:pla:ADFAF0987:FAFAADSF97
HAY
Iam.exe -r cmd.exe –b –h u2:\\192.168.1.1:GHDHAFGSGSG:DSFGDGGFS678
Chương trình này sẽ dùng(user:domain:NTLM) đăng nhập vào domain dưới quyền của user mà bạn băm ra được từ Whosthere ở trên.
Hiển thị cửa sổ cmd cho bạn sử dụng các lệnh dưới quyền của user mà bạn đăng nhập
Bạn dùng lệnh net view để xem những file chia sẽ và map nó về.sử dụng file chia sẻ đó dưới quyền của user mà bạn đăng nhập.
-h: username:domainname:LMhash:NThash. -H: this help -r: tạo mới 1 cái phiên đăng nhập và chạy với một
dòng lệnh ủy nhiệm đặc biệt (ví dụ:-r cmd.exe) -b:nếu iam.exe gập sự cố chương trình hay không
làm việc khi chạy trên hệ thống của bạn thì dùng option này.Iam.exe sẽ cố gắng xác định vị trí trong vài bộ nhớ thay vì phải sử dụng giá trị hard-code.
-D:Enable sửa lỗi thông tin
Option
SMBRelay man-in-the-middle
SMBRELAY
Là một máy chủ SMB có thể thu thập các thông tin phân tách về đối tượng sử dụng và mật khẩu từ luồng thông tin SMB đi tới
Ngoài ra SMBRELAY còn có thể thực hiện cuộc tấn công MITM
SMBRelay option /D num - Set debug level, current valid levels: 0 (none), 1, 2 Defaults to
0 /E - Enumerates interfaces and their indexes /IL num - Set the interface index to use when adding local IP addresses /IR num - Set the interface index to use when adding relay IP addresses
Defaults to 1. Use /E to display the adapter indexes /L[+] IP - Set the local IP to listen on for incoming NetBIOS connections
Use + to first add the IP address to the NIC Defaults to primary host IP /R[-] IP - Set the starting relay IP address to use Use - to NOT first add
each relay IP address to the NIC Defaults to 192.1.1.1 /S name - Set the source machine name Defaults to CDC4EVER
SMBRelay man-in-the-middle Scenario
Thiết lập mộ máy chủ SMBRELAY
Thiết lập một máy chủ SMBRelay giả thật đơn giản. Bước đầu tiên là chạy công cụ SMBRelay bằng khóa chuyển đổi liệt kê để xác định một giao diện vật lí thích hợp mà trên đó ta có thể chạy thiết bị nghe:
C:\ > smbrelay /E
Theo như ví dụ, giao diện với index2 là thích hợp nhất để ta lựa chọn vì nó là một bảng vật lí có thể tiếp cận được từ một hệ thống từ xa
Ta phải khởi chạy máy chủ khéo léo trên các hệ thống Windows 2000 vì các hệ điều hành sẽ không cho phép các quá trình khác kết nối cổng SMB TCP 139 khi mà hệ điều hành đang sử dụng cổng này. Một cách khắc phục đó là tạm thời vô hiệu hóa cổng TCP 139 bằng cách kiểm tra Disable NetBIOS trên TCP/IP, cụ thể là ta lựa chọn Properties of the appropriate Local Area Connection, tiếp đó là Properties of Internet Protocol , nhấp vào nút Advanced, và tiếp đó chọn nút radio thích hợp trên WINDS tab,rồi chọn disble NETBIOS over TCP/IP. Khi đã thực hiện xong,SMBRelay có thể kết nối TCP 139.
Nếu như vô hiệu hóa TCP 139 không phải là một lựa chọn duy nhất thì kẻ tấn công phải tạo ra một địa chỉ IP ảo để dựa vào đó chạy máy chủ SMB giả. Thật may mắn, SMBRelay cung cấp tính năng tự động giúp thiết lập và xóa các địa chỉ IP ảo sử dụng một khóa chuyển đổi lệnh đơn giản, /L+ ip_ address.
C:\ > smbrelay /IL 2003 /IR 20003 /L+ 192.168.30.54 /R- 192.168.30.54
Tiếp theo SMBRelay sẽ bắt đầu nhận những thỏa thuận vùng SMB. Khi một máy khách nạn nhân thỏa thuận thành công một vùng SMB, sau đây trình tự SMBRelay thực hiện:
-Máy chủ SMB bắt được user va password hash của máy Victim-Nhưng chuỗi hash này đã được mã hóa -Ta chỉ có thể dùng những phần mền Crackpass để bẻ khóa : Lpocrack
Nhưng đó không phải chức nang chinh của SMBRELAY ,hiện nay ta có thể xâm nhập máy khách chỉ bằng việc kết nối đơn giản qua điạ chỉ chuyển tiếp . Dưới đây là những biểu hiện của nó:
C:\>net use * \\192.168.30.54\c$ Drive E: is now connected to \\192.168.30.130\c$
The command completed successfully. C:\>dir e: Volume in drive G has no label Volume Serial Number is 44FO-BFDD Directory of G:\ 12/02/2000 10:51p <Dir> Documents and settings 12/02/2000 10:08p <Dir> Inetpub 05/25/2001 03:47a <Dir> Program Files 05/25/2001 03:47a <Dir> WINNT 0 File(s) 0 bytes 4 Dir(s) 44,405,624,832, bytes free
Khi sử dụng SMBRelay thường phát sinh một số vấn đề. Một lần thử kết nối từ một địa chỉ IP của nạn nhân đã cho và không thành công, tất cả các lần thử khác từ địa chỉ đó đều phát sinh lỗi đó. (lỗi này là do thiết kế chương trình). Bạn cũng có thể gặp khó khăn này ngay cả khi sự điều chỉnh ban đầu đã thành công nhưng bạn nhận được một thông tin như: "Login failure code: 0xC000006D." Khởi động lại SMBRelay giảm bớt những khó khăn đó. (chỉ cần kích phím CTRL-C để dừng lại). Ngoài ra, bạn cũng có thể thấy sự kết nối sai từ bộ phận điều hợp Loopback .
SMBRelay có thể không ổn định và kết quả không phải lúc nào cũng đúng hoàn toàn, nhưng đã thực hiện thành công, đó rõ ràng là một đợt tấn công phá hoại. Máy trung tâm đã tiếp cận hoàn toàn với tài nguyên của máy chủ đich mà không cần nhấc một ngón tay. Đương nhiên, khó khăn chủ yếu ở đây là: trước hết phải thuyết phục máy khách bị tấn công xác nhận với máy chủ MITM, tuy nhiên, chúng tôi đã bàn bạc một số phương pháp để giải quyết khó khăn này. Ta có thể gửi cho máy khách bị tấn công một tin nhắn e-mail xấu với một siêu liên kết đã được gắn sẵn với địa chỉ của máy chủ MITM SMBRelay. Hoặc thực hiện một tấn công độc hại ARP trống lại toàn bộ một mảng nào đó. Làm cho toàn bộ hệ thống trên phần đó phải xác nhận thông qua máy chủ MITM bất hợp pháp
Các biện pháp có vẻ rõ ràng với SMBRelay là cấu hình Windows 2000 để sử dụng SMB Signing, hiện được xem như số hóa khách /truyền thông phục vụ. Như cái tên gọi đã gợi ý, xác lập Windows 2000 nhằm số hóa khách hoặc truyền thông phục vụ sẽ làm ký hiệu mật mã hóa mỗi khối của truyền thông SMB. Chữ ký này có thể được một máy khách hoặc máy chủ kiểm tra để đảm bảo tính toàn vẹn và xác thực của mỗi khối, làm cho máy chủ SMB không thích hợp về mặt lý thuyết (không chắc có thực, phụ thuộc vào thuật toán dấu hiệu đã được sử dụng).
BiỆN PHÁP PHÒNG CHỐNG