TẤN CÔNG MAN IN THE MIDDLE MITMVào một buổi sáng đẹp trời nào đó bạn loggin vào facebook và nhận được hàng chục thông báo, trong lúc tiếp tục với tô mỳ dang dở, bạn từ từ xem từng cái,
Trang 1TẤN CÔNG MAN IN THE MIDDLE (MITM)
Vào một buổi sáng đẹp trời nào đó bạn loggin vào facebook và nhận được hàng chục thông
báo, trong lúc tiếp tục với tô mỳ dang dở, bạn từ từ xem từng cái, thật bất ngờ khi bạn nhận
được rất nhiều like từ bạn bè, bởi vì một stt mà bạn đăng, bạn vui nhưng cũng rất bất ngờ và
có chút lo lắng khi bạn không đăng stt nào trong vòng 24h qua, nhận ra có điều chẳng lành,
bạn xem lại trạng thái thì thật bất ngờ khi dòng stt “Tôi bị gay” kèm theo đó là một bức ảnh
của bạn cùng với chai neptune 111 nhận được hàng chục like, đến lúc này thì bạn thật sự
sửng sốt, không tin vào mắt mình nữa, ai đã đăng stt này? Nhận ra rằng đã có ai đó truy cập
tài khoản của bạn, ngay lập tức bạn thay đổi mật khẩu Bạn kĩ lưỡng kiểm tra lại, Oh, đã yên
tâm phần nào khi chưa có thiệt hại gì đáng kể, may quá chỉ là dòng trêu đùa, bạn dạo qua
vài trang trước khi tiếp tục với những công việc thường này Đến tối, bạn lại loggin vào face,
oh, lần này bạn nhận được một status khác với dòng ngắn gọn “hello” Đến lúc này bạn thật
sự hoang mang và hết đỗi lo sợ! Thật sự là bạn không hiểu? Bạn đã đổi mật khẩu rồi mà???
Chuyện gì đang xảy ra ở đây vậy!?
Để minh chứng những gì tôi nói, sau đây tôi sẽ giới thiệu với các bạn một kiểu tấn công phổ
biến có tên Man in the middle
Vậy tấn công Man in the middle là gì? Đúng như tên gọi, kiểu tấn công này có thể hiểu nôm
na là kẻ tấn công như một kẻ nghe trộm(Người đứng giữa), MITM hoạt động bằng cách thiết
lập các kết nối đến máy tính nạn nhân và relay các message giữa chúng Trong trường hợp
bị tấn công, nạn nhân cứ tin tưởng là họ đang truyền thông một cách trực tiếp với nạn nhân
kia, trong khi đó sự thực thì các luồng truyền thông lại bị thông qua host của kẻ tấn công Và
kết quả là các host này không chỉ có thể đánh chặn các dữ liệu nhạy cảm mà nó còn có thể
gửi xen vào cũng như thay đổi luồng dữ liệu để kiểm soát sâu hơn những nạn nhân của nó
Một sô hình thức tấn công MITM phổ biến có thể kể đến đó là ARP Cache Poisoning, DNS
Spoofing, HTTP session hijacking, passing the hash, Kiểu tấn công này là vô cùng nguy
hiểm nếu kẻ tấn công có những ý định hiểm độc nhằm vào nạn nhân
Trong khuôn khổ bài viết tôi sẽ thao tác tấn công MITM trên máy cài đặt windows vì tính phổ
biến của nó Trong trường hợp không có công cụ đáp ứng được yêu cầu thì sẽ tiến hành
trên Backtrack linux
Giả mạo ARP Cache (ARP Cache Poisoning)
Đây là một hình thức tấn công MITM hiện đại có xuất xứ lâu đời nhất (đôi khi còn được biết
đến với cái tên ARP Poison Routing), tấn công này cho phép kẻ tấn công (nằm trên cùng
một subnet với các nạn nhân của nó) có thể nghe trộm tất cả các lưu lượng mạng giữa các
máy tính nạn nhân Đây một trong những hình thức tấn công đơn giản nhất nhưng lại là một
hình thức hiệu quả nhất khi được thực hiện bởi kẻ tấn công
Truyền thông ARP thông thường
Giao thức ARP(Address Resolution Protocol) được thiết kế để phục vụ cho nhu cầu thông
dịch các địa chỉ giữa các lớp thứ hai và thứ ba trong mô hình OSI Lớp thứ hai (lớp
data-link) sử dụng địa chỉ MAC để các thiết bị phần cứng có thể truyền thông với nhau một cách
trực tiếp Lớp thứ ba (lớp mạng), sử dụng địa chỉ IP để tạo các mạng có khả năng mở rộng
trên toàn cầu Lớp data-link xử lý trực tiếp với các thiết bị được kết nối với nhau, còn lớp
mạng xử lý các thiết bị được kết nối trực tiếp và không trực tiếp Mỗi lớp có cơ chế phân
định địa chỉ riêng, và chúng phải làm việc với nhau để tạo nên một mạng truyền thông Với
©2014 by ISharla-luf
Trang 2lý do đó, ARP được tạo với RFC 826, “một giao thức phân định địa chỉ Ethernet - Ethernet
Address Resolution Protocol”
Hình 1: Quá trình truyền thông ARP Thực chất trong vấn đề hoạt động của ARP được tập trung vào hai gói, một gói ARP
request và một gói ARP reply Mục đích của request và reply là tìm ra địa chỉ MAC phần
cứng có liên quan tới địa chỉ IP đã cho để lưu lượng có thể đến được đích của nó trong
mạng Gói request được gửi đến các thiết bị trong đoạn mạng, trong khi gửi nó nói rằng
(đây chỉ là nhân cách hóa để giải thích theo hướng dễ hiểu nhất) “Hey, địa chỉ IP của tôi là
XX.XX.XX.XX, địa chỉ MAC của tôi là XX:XX:XX:XX:XX:XX Tôi cần gửi một vài thứ đến một
người có địa chỉ XX.XX.XX.XX, nhưng tôi không biết địa chỉ phần cứng này nằm ở đâu
trong đoạn mạng của mình Nếu ai đó có địa chỉ IP này, xin hãy đáp trả lại kèm với địa chỉ
MAC của mình!” Đáp trả sẽ được gửi đi trong gói ARP reply và cung cấp câu trả lời, “Hey
thiết bị phát Tôi là người mà bạn đang tìm kiếm với địa chỉ IP là XX.XX.XX.XX Địa chỉ MAC
của tôi là XX:XX:XX:XX:XX:XX.” Khi quá trình này hoàn tất, thiết bị phát sẽ cập nhật bảng
ARP cache của nó và hai thiết bị này có thể truyền thông với nhau
Giả mạo Cache
Việc giả mạo bảng ARP chính là lợi dụng bản tính không an toàn của giao thức ARP Không
giống như các giao thức khác, chẳng hạn như DNS (có thể được cấu hình để chỉ chấp nhận
các nâng cấp động khá an toàn), các thiết bị sử dụng giao thức phân giải địa chỉ (ARP) sẽ
chấp nhận nâng cấp bất cứ lúc nào Điều này có nghĩa rằng bất cứ thiết bị nào có thể gửi
©2014 by ISharla-luf
Trang 3gói ARP reply đến một máy tính khác và máy tính này sẽ cập nhật vào bảng ARP cache của
nó ngay giá trị mới này Việc gửi một gói ARP reply khi không có request nào được tạo ra
được gọi là việc gửi ARP “vu vơ” Khi các ARP reply vu vơ này đến được các máy tính đã
gửi request, máy tính request này sẽ nghĩ rằng đó chính là đối tượng mình đang tìm kiếm để
truyền thông, tuy nhiên thực chất họ lại đang truyền thông với một kẻ tấn công
Tìm hiểu thêm thông tin ở cuối bài viết
Hình 2: Chặn truyền thông bằng cách giả mạo ARP Cache
Sử dụng Cain & Abel
Có vài công cụ có thể giả mạo ARP cache, ở đây tôi sẽ sử dụng công cụ bảo mật phổ biến
là Cain & Abel của oxid.it, bạn có thể download nó tại đây http://www.oxid.it/cain.html
Ngoài chức năng giả mạo ARP cache, Cain & Abel còn có nhiều chức năng khác, các bạn
có thể tìm hiểu thêm
Giao diện khi khởi động:
©2014 by ISharla-luf
Trang 4Đầu tiên chúng ta cần config để chọn đúng card mạng mà bạn đang dùng
Có thể config nhiều thứ để phục vụ cho sự làm việc của cain ở đây, cái này các bạn tự tìm
hiểu thêm nhé./
Vẫn tại giao diện khởi động, ta thấy có rất nhiều tab nhưng ta chỉ quan tâm đến tab sniffer
Từ giao diện khởi động, các bước thực hiện tấn công, có thể tiến hành như hình sau:
©2014 by ISharla-luf
Trang 5Bước 1: Chọn công cụ start/stop sniffer để bắt đầu sniffer
Bước 2: Chọn tab Sniffer
Bước 3: Chọn công cụ Add to list (Dấu cộng màu xanh dương), sẽ xuất hiện bảng chọn như
hình sau:
Tại cửa sổ MAC Address Scanner, bạn chọn All hosts in my subnet để scan toàn bộ host
trong mạng hoặc chọn Range để quét trong một dải ip cụ thể, sau đó click ok
Tiếp theo Cain sẽ quét và bạn sẽ thấy xuất hiện danh sách các host có trong mạng
Bước 4: Bạn chọn tab ARP(màu vàng đen ở dưới)
©2014 by ISharla-luf
Trang 6Bước 5: Bạn click vào khoảng trống rồi chọn tiếp công cụ Add to list (Dấu cộng màu xanh
dương), cửa sổ New ARP Poison Routing xuất hiện:
Phần bên trái là các ip quét được, nếu bạn chọn một cái thì phần bên phải sẽ hiển thị các ip
còn lại Để theo dõi truyền thông giữa máy bên trái và các máy bên phải, bạn chọn ip bên
trái sau đó dùng chuột bôi đen để chọn các máy bên phải, click ok
Bước 6: Bạn nhấn vào biểu tượng vàng đen (Start/Stop APR) trên thanh công cụ để bắt đầu
quá trình giả mạo ARP cache
Bạn sẽ thấy ở tab Status sẽ biểu thị trạng thái chuyển từ Idle sang Poisoning
Bây giờ bạn chuyển sang tab Password phía dưới, bạn sẽ tìm thấy một số điều thú vị, để
xem nào:
©2014 by ISharla-luf
Trang 7Như các bạn thấy nó hiển thị username và password, hihi, chiến tích đầu tiên
Khi các bạn bắt đầu quá trình ARP Poisoning thì các bạn sẽ thấy lưu lượng ARP đến các
thiết bị, và thấy được sự truyền thông giữa chúng, để biết đằng sau đó có những gì, bạn có
thể lắng nghe bằng Wireshark http://www.wireshark.org/download.html
Trộm cookie
Một chức năng mà tôi thấy khá hay ho của Cain là nó có thể ghi lại các phiên kết nối HTTPS
ở mục APR-HTTPS, chức năng này khá giống với Wireshark, bản thân tôi thấy chức năng
này còn hay hơn cả Wireshark, nó cho phép chúng ta xem được sự trao đổi giữa máy tính
các nạn nhân bằng các bản ghi clear-text, bạn có thể xem các bản ghi này bằng cách truy
cập trực tiếp vào thư mục HTTPS trong thư mục cài đặt Cain theo đường dẫn C:\Program
Files\Cain\HTTPS
Và đây là hình một bản ghi như thế
©2014 by ISharla-luf
Trang 8Có khá nhiều thông tin thú vị ở đây, và ta tìm được một đoạn cookie, oh, các bạn nghĩ
chúng ta sẽ làm gì với đoạn cookie này, đương nhiên là chiến rồi chứ còn gì nữa>>hihi
Chúng ta sẽ dùng đoạn cookie để login vào tài khoản trên mà không cần biết username và
password, có nhiều cách để thực hiện việc này, trong khuôn khổ bài viết, tôi sử dụng trình
duyệt firefox, trên firefox thì có rất nhiều addons để edit cookie như Cookie Manager, Edit
Cookies, v.v…tuy nhiên điểm hạn chế của các addon này là chỉ cho phép sửa chữa hay
thêm từng trường, mà làm kiểu đó thì chờ khi làm xong có lẽ cookie đó cũng hết hạn rùi :D
vì vậy tôi sẽ giới thiệu với các bạn một addon rất hay có tên là Greasemonkey, download tại
https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/
Sau khi cài đặt bạn khởi động lại firefox, tiếp theo bạn tải script mang tên Cookie injector, có
thể download tại http://www.mediafire.com/view/fgo23m1kev9wcbx/cookieinjector.user.js
Cài đặt bằng cách kéo thả file này vào phần Extensions rồi nhấn Install
©2014 by ISharla-luf
Trang 9Sau khi cài đặt xong bạn truy cập vào host có trong bản ghi, ở đây tôi truy cập
Dump xuất hiện, bạn copy cookie khi nãy và paste vào rồi nhấn ok, chờ cho nó hiện lên
thông báo All Cookies Have Been Written thì nhấn ok
Reload lại trang là bạn có thể truy cập tài khoản đó rồi.:D
Giờ thì bạn đã tin câu chuyện tôi đưa ra phần đầu là có thực rồi chứ, trong thực tế kẻ tấn
công không chỉ có ý định trêu đùa như trong câu chuyện này, họ có thể lừa đảo các bạn bè
nạn nhân để chiếm đoạt tài sản, có thể là lừa nạp thẻ cho hắn chẳng hạn, rất nguy hiểm
phải không ạ!
NetCut và Bộ công cụ Winpcap và ArpSpoof
NetCut
Nguyên lí hoạt động của NetCut cũng chính là việc giả mạo arp, tuy nhiên ở nó có một cái
khác đó là nó không gửi đi những gói arp một cách vu vơ liên tục (kiểu như 192.168.1.1 có
địa chỉ là 02:0c:bb:31:c1:48 như cain ở trên) mà những gói arp nó gửi hoàn toàn có chủ đích
tới mục tiêu đã được xác định cụ thể là victim và gateway Bạn có thể nhìn thấy rõ trong
hình sau:
Trên hình ta thấy như sau, ở dòng đầu tiên “4 23.243073 33:0c:57:19:43:1b
00:23:5a:68:78:07 ARP Who has 192.168.1.33? Tell 192.168.1.1″
Có 1 cái gì đó có địa chỉ MAC 33:0c:57:19:43:1b hỏi máy của victim là ai có địa chỉ IP là
192.168.1.33 và nó cũng cho victim biết luôn rằng địa chỉ IP của nó là 192.168.1.1 Khi máy
victim nhận được câu hỏi này nó sẽ trả lời lại
“5 23.243098 00:23:5a:68:78:07 33:0c:57:19:43:1b ARP 192.168.1.33 is at
00:23:5a:68:78:07″ và lưu luôn địa chỉ của người vừa hỏi nó vào ARP cache: IP 192.168.1.1
ứng với MAC 33:0c:57:19:43:1b
Vậy là xong bước 1, ta thấy ở đây là 1 sự mạo nhận rất đơn giản, nó giả gateway và đi hỏi
victim chứ không phải là spoofing-cứ hét vào tai victim là “tôi 192.168.1.1, MAC của tôi là
33:0c:57:19:43:1b”, tức là send liên tiếp reply “33:0c:57:19:43:1b 00:23:5a:68:78:07 ARP
192.168.1.33 is at 00:02:cf:c7:ce:84″
Tiếp đến bước 2, nó giả làm victim và đi hỏi gateway
“7 23.243262 33:0c:57:19:43:1b ZygateCo_c7:ce:84 ARP Who has 192.168.1.1? Tell
192.168.1.33”
quá trình tương tự xảy ra, và giờ trong bảng ARP cache của modem hoặc router sẽ lưu là IP
192.168.1.33 có địa chỉ MAC là 33:0c:57:19:43:1b
Một gói tin muốn chuyển ra ngoài phải đi qua gateway, và giờ victim sẽ gửi gói tin này cho
192.168.1.1 có MAC là 33:0c:57:19:43:1b-một địa chỉ không tồn tại trong mạng, 1 gói tin từ
ngoài chuyển vào cũng thế đến gateway nó sẽ chuyển cho 192.168.1.33 nhưng lúc này
192.168.1.33 lại có MAC là 33:0c:57:19:43:1b và kết quả là victim rớt mạng
©2014 by ISharla-luf
Trang 10Đoạn còn lại(từ gói tin có số thứ tự 16 trở đi) là lúc mình bấm resume và netcut nó làm
ngược lại công việc của mình thôi nó sẽ hỏi lại máy victim, rồi hỏi lại gateway nhưng lần
này với địa chỉ MAC là đúng.ok
Như vậy là chúng ta đã tìm hiểu nguyên lí làm việc của nó, bây giờ các bạn hãy cài đặt và
sử dụng nó (không khuyến khích nhé :3), cách sử dụng NetCut rất đơn giản và vì phần mềm
này đã quá quen thuộc rồi nên mình không nói lại nữa
Bộ công cụ Winpcap và ArpSpoof
Một bộ công cụ rất nổi tiếng khác có thể được dùng để tấn công arp là WinPcap và
ArpSpoof, các bạn có thể tải tại đây
http://www.mediafire.com/download/lq8dxreyj3j08qe/winpcap_arpspoof.rar
Nhớ tắt trình diệt virus trước khi tải về hay giải nén file này nhé bởi vì nguyên tắc hoạt động
của file arpspoof.exe làm av nhận nhầm là virus, vì bộ công cụ này rất nổi tiếng nên mình sẽ
không giới thiệu lại nữa, bạn nào chưa biết thì search google nhé Vào việc chính thôi, sau
đây mình sẽ giới thiêụ các bạn cách tấn công:
Sau khi tải về bộ công cụ trên các bạn giải nén vào một thư mục nào đó cho dễ tìm, mình thì
mình để ở C:\
để cho nhanh cho việc thao tác sau này, các bạn có thể để ở thư mục system32 của
windows C:\Windows\System32(nhưng thư mục này nhiều file quá rối mắt:D)
Trước tiên bạn cài phần mềm winpcap vào máy.(phần mềm này chắc ai cũng đã cài rồi phải
không :v)
Tiếp theo bạn bật cmd lên, chạy với quyền administrator, muốn tấn công máy nào thì chỉ
cần gõ lệnh arpspoof -t [ip Gateway] [ip máy nạn nhân] Lưu ý, vì file arpspoof.exe và
Libnet.dll mình để ở thư mục C:\ nên đầu tiên mình phải đưa con trỏ lệnh về thư mục C:\ thì
mới thực hiện được lệnh trên
Sau khi thực hiện lệnh trên, bạn chọn đúng card mạng rồi nhấn Enter(ở đây mình chọn 2)
thế là cuộc tấn công bắt đầu
Khi bị tấn công, nạn nhân vẫn truy cập được vào router nhưng không vào được mạng
Bạn xem thêm trên wireshark để hiểu rõ hơn nhé
©2014 by ISharla-luf
Trang 11Biện pháp phòng chống
Như chúng ta vừa tìm hiểu thì việc phát hiện và dự báo tấn công giả mạo ARP Cache là vô
cùng khó khăn, bởi nó chỉ được phát hiện khi attacker đã ra tay, tuy vậy nếu bạn lo lắng về
vấn đề giả mạo arp cache trong mạng của mình thì một số giải pháp sau có thể giúp cho
bạn:
Bảo mật LAN
Giả mạo ARP Cache chỉ là một kỹ thuật tấn công mà nó chỉ sống sót khi cố gắng chặn lưu
lượng giữa hai thiết bị trên cùng một LAN Chỉ có một lý do khiến cho bạn lo sợ về vấn đề
này là liệu thiết bị nội bộ trên mạng của bạn có bị thỏa hiệp, người dùng tin cậy có ý định
hiểm độc hay không hoặc liệu có ai đó có thể cắm một thiết bị không tin cậy vào mạng Mặc
dù chúng ta thường tập trung toàn bộ những cố gắng bảo mật của mình lên phạm vi mạng
nhưng việc phòng chống lại những mối đe dọa ngay từ bên trong và việc có một thái độ bảo
mật bên trong tốt có thể giúp bạn loại trừ được sự sợ hãi trong tấn công được đề cập ở đây
Mã hóa ARP Cache
Một cách có thể bảo vệ chống lại vấn đề không an toàn vốn có trong các ARP request và
ARP reply là thực hiện một quá trình kém động hơn Đây là một tùy chọn vì các máy tính
Windows cho phép bạn có thể bổ sung các entry tĩnh vào ARP cache Bạn có thể xem ARP
cache của máy tính Windows bằng cách mở Command Prompt và gõ vào đó lệnh arp –a
Có thể thêm các entry vào danh sách này bằng cách sử dụng lệnh arp –s <IP ADDRESS>
<MAC ADDRESS>
như các bạn thấy nó đã chuyển từ dynamic sang static
©2014 by ISharla-luf