You are on page 1of 85

Báo cáo Hash Injection

Thành viên :

Phạm Minh Lộc
Đào Văn Tú
Đỗ Hồng Phúc
Nguyễ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/NTLM
http://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\CACH
E 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:fa1d701b2YYYYYYYYYYYYYYYY71
5b5::: 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\Window
s 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-Injection
Whosthere
 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