Tuy vậy dù một kẻ tấn công attacker không có truy cập vật lý trực tiếp đến máy tính, chúng vẫn có thể truy vập vào máy chủ thông qua giao thức máy trạm từ xa remote desktop hoặc xác thực
Trang 1ĐH QUỐC GIA TP.HCM
ĐH CÔNG NGHỆ THÔNG TIN
BÁO CÁO LAB HACKING
Trang 2LỜI NÓI ĐẦU
Hiện nay có rất nhiều cách để tấn công vào một hệ thống mạng, trong đó có một kiểu tấn công kinh điển và phổ biến nhất là ăn cắp tài khoản của người sử dụng trong hệ thống Nó cũng có thể được dùng như là một bước trung gian của các kiểu tấn công khác, điển hình là bước leo thang đặc quyền (Priviledge Escalation) Sẽ thật là nguy hiểm nếu như attacker nắm được tài khoản quản trị của hệ thống và làm gì tùy ý
Mật khẩu (Password) thường là con đường chủ đạo trong việc phòng chống sự xâm nhập bừa bãi Tuy vậy dù một kẻ tấn công (attacker) không có truy cập vật lý (trực tiếp) đến máy tính, chúng vẫn có thể truy vập vào máy chủ thông qua giao thức máy trạm từ
xa (remote desktop) hoặc xác thực một dịch vụ thông qua một ứng dụng web bên ngoài.Mục đích của bài viết này nhằm giới thiệu cho các bạn cách mà một hệ thống Windows hay Linux tạo và lưu các mật khẩu đã được mã hóa, và cách đánh cắp cũng như crack các mật khẩu này, song song đó cũng sẽ đưa ra một số phương pháp để phòng chống
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 2
MỤC LỤC 3
I Lý Thuyết : 3
1 Local System: 4
2 Local Network : 9
3 Internet : 10
II Mô hình triển khai : 10
1 Local System : (Attacker thao tác trên máy Victim) 10
2 Local Network : (Attacker ở cùng mạng LAN với Victim) 11
3 Internet : (Attacker tấn công Victim qua Internet) 11
III Triển khai tấn công : 11
1 Local System : (Attacker thao tác trên máy Victim) 11
Lab 1: (Windows) 11
Lab 2: (Linux) 15
Lab 3: (Keylogger) 17
Nâng cao: (remote install) 22
2 Local Network : (Attacker ở cùng mạng LAN với Victim) 25
3 Internet : (Attacker tấn công Victim qua Internet) 29
IV Nhận xét và cách phòng chống : 31
1 Local System : 31
2 Local Network : 31
3 Internet : 32
Trang 4I Lý Thuyết :
1 Local System:
Windows:
Windows lưu mật khẩu như thế nào
Windows sử dụng hai phương pháp hash mật khẩu người dùng, cả hai đều có những điểm mạnh và điểm yếu riêng Đó là LAN Manager (LM) và NT LAN Manager version
2 (NTLMv2) Hàm hash (hash function) là hàm một chiều mà nếu đưa một lượng dữ liệu bất kì qua hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra
Hash mật khẩu LAN Manager (LM)
Hash LAN Manager là một trong những thuật toán hash mật khẩu đầu tiên được sử dụng bởi các hệ điều hành Windows, chỉ có một phiên bản duy nhất được hỗ trợ cho tới khi xuất hiện NTLMv2 sử dụng trong Windows 2000, XP, Vista và Windows 7 Các hệ điều hành mới này vẫn hỗ trợ sử dụng các hash LM để có khả năng tương thích Mặc dùvậy, nó đã bị vô hiệu hóa mặc định trong Windows Vista và Windows 7
Hash mật khẩu loại này được tính bằng một quá trình 6 bước sau:
a) Mật khẩu người dùng được chuyển đổi thành tất cả các ký tự in hoa
b) Mật khẩu được bổ sung thêm các ký tự 0 vào cho tới khi có đủ 14 ký tự
c) Mật khẩu mới được chia thành hai chuỗi hash có 7 ký tự
d) Các giá trị này được sử dụng để tạo hai khóa mã hóa DES, mỗi nửa đều được thêm vào một bit chẵn lẻ để tạo các khóa 64 bit
e) Mỗi khóa DES sẽ được sử dụng để mã hóa một chuỗi ASCII định sẵn (KGS!@#$%), cho kết quả ra trong hai chuỗi văn bản mật 8-byte
f) Hai chuỗi văn bản mật 8-byte này sẽ được kết hợp để tạo thành một giá trị 16-byte, giá trị này chính là một hash LM hoàn chỉnh
Trong thực tế, mật khẩu “PassWord123” sẽ được chuyển đổi như sau:
Trang 5Các mật khẩu tuân theo phương pháp LM hash có một số nhược điểm Nhược điểm đầu tiên cần kể đến là sự mã hóa ở đây dựa vào Data Encyrption Standard (DES) DES khởi đầu từ một dự án của IBM vào những năm 70, dự án sau đó bị sửa đổi bởi NIST, được bảo trợ bởi NSA và được phát hành như một chuẩn ANSI vào năm 1981 DES được cho
là khá an toàn trong nhiều năm sau những nghiên cứu kỹ lưỡng trong những năm 90 nhờ kích thước key 56-bit của nó Tuy nhiên đến đầu năm 1998, Electronic Frontier Foundation thông báo là đã có thể crack DES trong khoảng thời gian 23 giờ Từ đó, DES được xem như đã lỗi thời và cũng từ đó nó được thay thế bằng Triple-DES và AES
Có lẽ điểm yếu lớn nhất trong LM hash chính là trong quá trình tạo các khóa (key) DES Trong quá trình này, một mật khẩu được cấp bởi người dùng sẽ tự động chuyển đổi tất cả thành in hoa, sau đó được chèn thêm thành chuỗi có độ dài 14 ký tự (đây là chiều dài tối đa cho mật khẩu theo phương pháp LM hash), tiếp đó được chia thành hai hash 7 ký tự Đây là một điểm yếu khi chuỗi mật mã bị chia nhỏ và chỉ được phép sử dụng các ký tự ASCII in hoa Xét về bản chất, thuật toán này làm cho việc sử dụng các
Trang 6ký tự khác cũng như tăng chiều dài mật khẩu trở nên vô nghĩa, đó chính là điều làm cho các mật khẩu LM trở nên có “lỗ hỏng” đối với kiểu tấn công vét cạn (brute-force
attack)
Hash mật khẩu NTLMv2
NT LAN Manager (NTLM) là một giao thức thẩm định của Microsoft, giao thức này được tạo ra để kế vị LM Có nhiều tải tiến, NTLMv2 được chấp nhận như một phương pháp thẩm định mới đáng để lựa chọn và được thực thi trong WindowsNT4
Quá trình tạo một NTLMv2 hash là một quá trình đơn giản hơn nhiều với những gì mà
hệ điều hành thực hiện, nó dựa vào thuật toán hash MD4 để tạo hash nhờ một loạt các tính toán toán học Thuật toán MD4 được sử dụng ba lần để tạo NT hash Trong thực tế,mật khẩu “PassWord123” sẽ có kết quả là “94354877D5B87105D7FEC0F3BF500B33”sau khi sử dụng thuật toán MD4
MD4 được coi là mạnh hơn đáng kể so với DES vì nó cho phép mật khẩu có chiều dài dài hơn, có sự phân biệt giữa các ký tự in thường và in hoa, không chia mật khẩu thành các phần nhỏ hơn (điều này tạo sự dễ dàng trong việc crack)
Có lẽ nhược điểm lớn nhất với các NTLMv2 hash là Windows không sử dụng kỹ thuật salting (tạm dịch là ướp muối) Salting là một kỹ thuật mà trong đó một số ngẫu nhiên được tạo ra để tính toán hash cho mật khẩu Điều này có nghĩa rằng cùng một mật khẩu
có thể có hai giá trị hash khác nhau hoàn toàn, đây thực sự là điều lý tưởng
Trong trường hợp này, người dùng có khả năng tạo những gì được gọi là các “bảng cầu
vồng” (rainbow table) Các bảng cầu vồng này là các bảng có chứa các giá trị hash cho
số lượng mật khẩu có thể đối với một số lượng ký tự nào đó Sử dụng bảng cầu vồng,
bạn có thể lấy một cách đơn giản giá trị hash được trích rút từ máy tính mục tiêu và thựchiện một tìm kiếm Khi giá trị hash được tìm thấy trong bảng, bạn sẽ có mật khẩu Như
Trang 7các ký tự cũng có thể trở thành rất lớn, có nghĩa rằng sự sinh sôi, lưu trữ và đánh chỉ số cho chúng sẽ là một nhiệm vụ khó khăn.
Linux :
Trước đây Unix và Linux không có shadow password System V Release 3.2 (1987), BSD4.3 Reno (1991) và Linux (1992) mới ứng dụng shadowing Chúng có cùng nguyêntắc xử lý shadow Chỉ có điểm khác biệt là tên gọi hồ sơ shadow và vị trí chứa hồ sơ nàykhác nhau trên các Unix flavors mà thôi Ví dụ, trên Linux, shadow nằm ở /etc/shadow, trên BSD /etc/master.passwd, trên HP-UX /.secure/etc/passwd Có một số UNIX tạo shadow riêng cho từng username
Về cách "mã hoá" shadow thì tổng thể như sau Khi user được cung cấp một pasword hoặc anh ta chọn một password, password này được encode với giá trị ngẫu nhiên được gọi là salt Giá trị salt này sẽ được lưu cùng với password đã được encoded trên hệ thống
Khi người dùng login bằng password của mình, giá trị salt sẽ được lấy ra từ encoded password (đã được lưu trên hệ thống) và giá trị salt này sẽ dùng để encode password màngười dùng vừa gõ vào Nếu hai giá trị đã lưu và vừa được encoded trùng nhau thì người dùng được xác thực
Quy trình encoding ở đây gọi là "one way hash function" và hàm crypt() được sử dụng
để thực thi #man crypt có cung cấp một số thông tin cụ thể hơn Những điểm cần nắm với crypt() là:
a) Crypt: hàm dùng để "mã hoá" mật khẩu, dựa trên tiêu chuẩn thuật toán DES
b) Key: là giá trị password (ở dạng string) mà người dùng gõ vào
c) Salt: là chuỗi string có 2 ký tự được chọn từ chuỗi [a-zA-Z0-9./] (biểu thị các ký tự từ a đến z cho chữ thường và chữ in và các số từ 0 đến 9, thêm vào đó là 2 ký tự và /) Từ chuỗi này mới tạo ra giá trị ngẫu nhiên từ 4096 khả năng khác nhau
d) Các ứng dụng mở rộng trên các thư viện dùng cho hàm này có chức năng dùng các thuậttoán khác thay vì DES có thể tạo chuỗi hash lớn hơn
Nhiều người dùng cụm "encrypted password" cho trường hợp shadowed password và dùng như thế có phần thiếu chính xác "shadowed password" bao gồm salt (để encode password khi user gõ password vào) và encoded string (dùng để so sánh với giá trị vừa
gõ vào và đã được encode) Gọi chung đây là "hash" (hay băm theo tiếng Việt )
Có 2 phần tách biệt:
a) Lần đầu tiên khi account được tạo ra và command passwd <username> được chạy, cleartxt input này sẽ được encoded và salt sẽ được tạo ra để cùng đưa vào "password" field trong /etc/shadow
b) Khi người dùng login, clear txt string mà người dùng đưa vào sẽ được encoded với salt
đã có trong /etc/shadow và kết quả sẽ được dùng để so sánh giữa cái vừa được tạo ra và cái có sẵn trên hệ thống (trong /etc/shadow)
Nói về khía cạnh bảo mật thì việc "dời" pass hash sang /etc/shadow nhằm khắc phục một điểm yếu của /etc/passwd đó là ai cũng có thể read /etc/passwd và đọc hash value trong đó để brute force Trong khi đó, /etc/shadow chỉ có thể đọc với chủ quyền root
Trang 8Binary passwd được set SUID để thực hiện việc dùng chủ quyền root để đọc hash value trong /etc/shadow
Keylogger:
Keylogger hay "trình theo dõi thao tác bàn phím" theo cách dịch ra tiếng Việt là một
chương trình máy tính ban đầu được viết nhằm mục đích theo dõi và ghi lại mọi thao tác
thực hiện trên bàn phím vào một tập tin nhật ký (log) để cho người cài đặt nó sử dụng
Vì chức năng mang tính vi phạm vào riêng tư của người khác này nên các trình
keylogger được xếp vào nhóm các phần mềm gián điệp
Về sau, khi keylogger phát triển cao hơn nó không những ghi lại thao tác bàn phím mà còn ghi lại cả các hình ảnh hiển thị trên màn hình (screen) bằng cách chụp (screen-shot) hoặc quay phim (screen-capture) thậm chí còn ghi nhận cách con trỏ chuột trên máy tính di chuyển
Keylogger bao gồm hai loại, một loại keylogger phần cứng và một loại là phần mềm Bài viết này nói đến loại phần mềm
Theo những người lập trình, keylogger viết ra với chỉ có một loại duy nhất là giúp các bạn giám sát con cái, người thân xem họ làm gì với PC, với internet, khi chat với người
lạ Nhưng cách sử dụng và chức năng của keylogger hiện tại trên thế giới khiến người tathường hay phân loại keylogger theo mức độ nguy hiểm bằng các câu hỏi:
Nhiễm vào máy không qua cài đặt/Cài đặt vào máy cực nhanh (quick install)?
Có thuộc tính ẩn/giấu trên trình quản lí tiến trình (process manager) và trình cài đặt và gỡ bỏ chương trình (Add or Remove Program)?
Theo dõi không thông báo/PC bị nhiễm khó tự phát hiện?
Có thêm chức năng Capturescreen hoặc ghi lại thao tác chuột?
Khó tháo gỡ?
Có khả năng lây nhiễm, chống tắt (kill process)?
Cứ mỗi câu trả lời "có", cho một điểm Điểm càng cao, keylogger càng vượt khỏi mục đích giám sát (monitoring) đến với mục đích do thám (spying) và tính nguy hiểm nó càng cao Keylogger có thể được phân loại theo số điểm:
Trang 92 Local Network :
a) Giới thiệu giao thức ARP:
Mỗi thiết bị trong hệ thống mạng của chúng ta có ít nhất hai địa chỉ Một địa chỉ là Media Access Control (MAC) và một địa chỉ Internet Protocol (IP) Địa chỉ MAC là địachỉ của card mạng gắn vào bên trong thiết bị, nó là duy nhất và không thể thay đổi Địa chỉ IP có thể thay đổi theo người sử dụng tùy vào môi trường mạng ARP là một trong những giao thức của IP, chức năng của nó dùng để định vị một host trong một segment mạng bằng cách phân giải địa chỉ IP ra địa chỉ MAC ARP thực hiện điều đó thông qua một tiến trình broadcast gói tin đến tất cả các host trong mạng, gói tin đó chứa địa chỉ IPcủa host cần giao tiếp Các host trong mạng đều nhận được gói tin đó và chỉ duy nhất host nào có địa chỉ IP trùng với địa chỉ IP trong gói tin mới trả lời lại, còn lại sẽ tự động drop gói tin
ARP là một giao thức hết sức đơn giản, nó đơn thuần có 4 loại message cơ bản sau:
Arp Request: máy tính A sẽ hỏi toàn mạng: “ai có địa chỉ IP này?”
Arp Reply: máy tính B trả lời máy tính A: “tôi có IP đó, địa chỉ MAC của tôi là…”
Reverse Arp Request: máy tính A sẽ hỏi toàn mạng: “ai có địa chỉ MAC này?”
Reverse Arp Reply: máy tính B trả lời máy tính A: “tôi có MAC đó, địa chỉ IP của tôi là…”
Host A gởi một Arp request và nhận được một Arp reply từ một host B có thực trong mạng Sau khi tiến trình này hoàn tất, Host A đã biết được IP của B sẽ có MAC như thế nào Tiếp theo host A sẽ lưu lại sự hiểu biết đó lên bộ nhớ của mình gọi là Arp table Arp table giúp host A không phải thực hiện Arp request đến host B một lần nữa
b) Nguyên lý tấn công:
Giao thức ARP là rất cần thiết và quan trọng trong hệ thống mạng của chúng ta, tuy nhiên nó lại không đề cập đến vấn đề xác thực nào cả Khi một host nhận được gói tin Arp reply, nó hoàn toàn tin tưởng và mặc nhiên sử dụng thông tin đó để sự dụng sau này
mà không cần biết thông tin đó có phải trả lời từ một host mà mình mong muốn hay không ARP không có cơ chế nào để kiểm tra việc đó cả và trên thực tế một host có thể chấp nhận gói Arp reply mà trước đó không cần phải gởi gói tin Arp request Lợi dụng điều này hacker có thể triển khai các phương thức tấn công như Denial of Service, Man
In The Middle, Mac Flodding
c) Man In The Middle:
Giả sử hacker muốn theo dõi hostA gởi thông tin gì cho hostB Đầu tiên hacker sẽ gởi gói Arp reply đến hostA với nội dung là địa chỉ MAC của hacker và địa chỉ IP của hostB Tiếp theo hacker sẽ gởi gói Arp reply tới hostB với nội dung là MAC của máy hacker và IP của hostA Như vậy cả hai hostA và hostB đều tiếp nhận gói Arp reply đó
và lưu vào trong Arp table của mình Đến lúc này khi hostA muốn gởi thông tin cho hostB nó liền tra vào Arp table thấy đã có sẵn thông tin về địa chỉ MAC của hostB nên hostA sẽ lấy thông tin đó ra sử dụng, nhưng thực chất địa chỉ MAC đó là của hacker Đồng thời máy tính của hacker sẽ mở chức năng gọi là IP Forwarding giúp chuyển tải nội dung mà hostA gởi qua hostB HostA và hostB giao tiếp bình thường và không có cảm giác bị qua máy trung gian là máy của hacker
Trang 10Trong trường hợp khác, hacker sẽ nghe lén thông tin từ máy bạn đến Gateway Như vậymọi hàng động ra internet của bạn đều bị hacker ghi lại hết, dẫn đến việc mất mát các thông tin nhạy cảm.
3 Internet :
Tấn công giả mạo (phishing, ám chỉ việc "nhử" người dùng tiết lộ thông tin mật), trong
lĩnh vực bảo mật máy tính, là một hành vi giả mạo ác ý nhằm lấy được các thông tin nhạy cảm như tên người dùng, mật khẩu và các chi tiết thẻ tín dụng bằng cách giả dạng thành một chủ thể tin cậy trong một giao dịch điện tử Các giao dịch thường dùng để đánh lừa những người dùng ít đa nghi là các giao dịch có vẻ xuất phát từ các website xã hội phổ biến, các trung tâm chi trả trực tuyến hoặc các quản trị mạng Tấn công giả mạothường được thực hiện qua thư điện tử hoặc tin nhắn nhanh, và hay yêu cầu người dùng nhập thông tin vào một website giả mạo gần như giống hệt với website thật Ngay cả khi có sử dụng chứng thực máy chủ, có khi vẫn phải cần vài kĩ năng phức tạp mới xác định được website là giả mạo Tấn công giả mạo là một đơn cử của những kĩ thuật lừa đảo qua mạng (social engineering) nhằm đánh lừa người dùng, và khai thác sự bất tiện hiện nay của công nghệ bảo mật web
II Mô hình triển khai :
1 Local System : (Attacker thao tác trên máy Victim)
Lab 1: (Windows)
B1: Boot máy với Hiren Boot, chọn WindowsXP mini
B2: Vào C:\Windows\system32\config chép file sam va file system về máy AttackerB3: Dùng Cain & Abel để crack file sam với boot key có trong file system
Lab 2: (Linux)
B1: Vào Recovery Mode
B2: Remount file hệ thống dưới dạng read/write
B3: Chọn root shell prompt để được dùng quyền root (user quyền cao nhất)
B4: Down John The Ripper về máy
B5: Crack password trong /etc/shadow
Lab 3: (Keylogger)
B1: Cài Perfect Keylogger và cấu hình
B2: Victim ngồi vào máy và thao tác như bình thường
B3: Xem file log để đánh cắp thông tin
Nâng cao: (remote install)
B1: Cấu hình remote install
B2: Gửi file chứa keylogger cho Victim
B3: Victim chạy file và bị dính keylogger
B4: Lấy file log từ mail về để xem
Trang 112 Local Network : (Attacker ở cùng mạng LAN với Victim)
Dùng phương pháp tấn công Man-in-the-middle : (dùng Cain & Abel)
B1: Bật chức năng Sniffer, quét các máy trong mạng LAN
B2: Tiến hành ARP poisoning
B3: Thu được gói tin chứa id và password dưới dạng plaintext
3 Internet : (Attacker tấn công Victim qua Internet)
B1: Attacker gửi 1 trang web đăng nhập giả đến victim (phishing)
B2: Thông tin đăng nhập của victim được gửi về attacker
B3: Attacker lưu lại thông tin và chuyển tiếp đến server
B4: Server chứng thực thành công và gửi lại attacker
B5: Attacker gửi trả về victim
III Triển khai tấn công :
1 Local System : (Attacker thao tác trên máy Victim)
Lab 1: (Windows)
B1: Bỏ đĩa Hiren Boot vào (Hiren Boot 10 trở lên mới boot được ổ NTFS), chọn boot từ
CD-ROM, rồi chọn WindowsXP mini
4 bước này thực hiện chung 1 lần
Trang 12B2: Copy file sam và system trong C:\Windows\system32\config về máy Attacker.
B3: Mở Cain, chọn tab Cracker, chọn LM&NTLM Hashes, bấm dấu +, chọn import
Hashes from a SAM database, chỉnh đường dẫn đến file sam và file system vừa copy, copy boot key và paste vào khung boot key, xong nhấn Next
Trang 13Chọn account cần crack password, nhấp phải chuột chọn Cryptanalysys Attack->LM Hashes->via Rainbow Tables (OphCrack).
Trong cửa sổ mới chọn đường dẫn tới Rainbow Tables tương ứng và bấm Start để crack, sau khi crack xong sẽ có thông báo về thời gian bỏ ra
Trang 14Password đã được crack và hash của nó được liệt kê ra rất chi tiết.
Trang 15Lab 2: (Linux)
B1: Bấm nút reset sau đó giữ phím Shift để load GRUB, rồi chọn Recovery Mode
B2: File hệ thống mặc định trong Recovery Mode được mount dưới dạng read-only, nên
ta chọn remount để mount lại dưới dạng read/write
B3: Chọn root để sử dụng root shell prompt, quyền thực thi là quyền user root (user có
quyền cao nhất, hơn cả nhóm sudoers)
Trang 16B4: Kiểm tra xem máy co IP chưa, nếu chưa thì nhập dhclient eth0 để xin DHCP cấp
IP động cho card eth0, sau đó gõ apt-get install john để down john về và cài đặt
B5: Gõ lệnh john /etc/shadow để john crack password các account có trong shadow,
mặc định john sẽ crack theo chu trình sau : single mode > incremental mode
Single mode : crack dựa theo username (vd: u1 sẽ đoán là u1, u123, mr.u1, …)
Incremental mode : dùng giải thuật vét cạn để đoán (thử tất cả các trường hợp có thể)Hoặc có thể chỉ định cách mà john dùng để crack bằng cách thêm vào các option như
-single, -i (incremental), -format=(type) (loại định dạng như DES,MD5,crypt…)