* Trước khi đọc tiếp phần phía dưới, tôi xin lưu ý là bài viết này chỉ hướng dẫn cách đọc nội dung chat Yahoo của người khác (tất nhiên là không phải nội dung người đó chat với mình rồi) chứ không hướng dẫn cách lấy password Yahoo nhé. Thật ra thì cách dễ nhất để đọc chat của người khác là…lén đứng sau lưng người ta mà nhìn , nhưng mà tôi sẽ không chịu trách nhiệm nếu bạn bị người đó phát hiện, hậu quả bạn tự gánh chịu lấy nhé . Thôi, nói lan man vậy đủ rồi, let’s go. Phần 1: Lý thuyết Giả sử tôi có mô hình mạng như bên dưới: Ở đây, tôi đóng vai 1 Attacker và muốn “nghe lén” cuộc “nói chuyện” giữa 2 máy A và B. Nếu bạn nào có biết qua về mạng máy tính thì sẽ biết 1 máy tính có 1 địa chỉ IP và 1 địa chỉ MAC (nó tương tự như số nhà bạn ấy mà), các địa chỉ này dùng để nhận diện 1 máy tính trên mạng. Giả sử A muốn nói chuyện với B nhưng nó chỉ biết địa chỉ IP của B mà không biết địa chỉ MAC của B, A lập tức gửi 1 gói tin ARP Request ra toàn mạng và hỏi rằng: “Ê, ku nào có địa chỉ IP là x.y.z.t nói tao biết địa chỉ MAC của mày là nhiêu?”. Khi đó, cả máy B lẫn máy Attacker đều nhận được gói tin này, nhưng chỉ có B hồi đáp lại cho A bằng 1 gói tin ARP Reply, báo cho A biết địa chỉ MAC của mình. Khi đã có đủ thông tin về địa chỉ IP và MAC của máy B, A bắt đầu trao đổi dữ liệu với B. Địa chỉ MAC của B sẽ được A lưu lại trong Cache để lần sau nếu có trao đổi dữ liệu với B thì không cần phải hỏi địa chỉ MAC nữa. Tuy nhiên, vấn đề nằm ở chỗ giao thức ARP hoạt động ở tầng 2, trong khi địa chỉ IP lại nằm ở tầng 3 (trong mô hình 7 tầng OSI) nên A sẽ không thể kiểm chứng được thông tin có đúng là máy B với địa IP x.y.z.t có địa chỉ MAC như vậy không. Bây giờ, Attacker chỉ cần gửi 1 gói tin ARP Reply cho A và báo rằng: “Ê, tao B nè. Giờ địa chỉ MAC của tao là a-b-c-d chứ không giống hồi nãy nữa nha”. Vì không thể kiểm chứng được thông tin này nên A cũng nhắm mắt đưa chân ghi thông tin này vào Cache, đè lên thông tin chính xác về B đã ghi nhận ở bước trước. He he, như vậy, bây giờ mỗi lần thay vì A gửi dữ liệu cho B thì nó lại gửi đến máy Attacker. Nhưng một vấn đề khác lại xảy ra: nếu thông tin không đến được máy B thì máy B đâu có biết mà trả lời máy A, vậy sao gọi là “nghe lén” A và B “nói chuyện” được? Cách đơn giản là Attacker đánh lừa luôn cả B để B tưởng máy Attacker là máy A, khi dữ liệu từ A gửi đến B (nhưng thực ra là đến Attacker), Attacker sẽ giữ lại 1 bản và chuyển tiếp đến cho B. Khi B trả lời lại cho A (cũng lại đến Attacker), Attacker cũng sẽ giữ lại 1 bản và chuyển tiếp đến cho A. Đến đây thì chắc các bạn cũng hình dung ra cách mà Attacker nghe lén A và B nói chuyện rồi há. Attacker trong trường hợp này được gọi là “Man-in-the-middle”. Phần 2: Thực hành Đọc xong phần lý thuyết trên, có bạn sẽ théc méc: “Ủa, sao ông nói ông chỉ tui cách đọc chat Yahoo của người khác mà sao từ nãy giờ toàn nói gì mà máy A, máy B, rồi máy Attacker tùm lum hết trơn, chả thấy nói tới Yahoo đâu hết”. “Bình tĩnh nào bạn, tui gợi ý nhé: dù cho bạn có chat với ai đi nữa, thì nội dung chat của bạn cũng phải đi từ máy bạn đến cái modem ADSL để ra internet chứ phải không nào?”. “À, hình như tui có vẻ hiểu hiểu rồi đó. Có phải là cái máy mình muốn đọc nội dung chat sẽ đóng vai trò máy A, còn modem ADSL sẽ đóng vai trò máy B trong mô hình trên không?”. “Hoan hô, đúng rồi đó. Tui biết bạn thông minh lắm mà. Nhưng mà đó chỉ là lý thuyết thôi, chúng ta không thể tay không mà bắt giặc được. Bạn cần chuẩn bị cho tôi mấy thứ đồ nghề sau: 1. Cain & Abel: lấy ở www.oxid.it 2. Yahoo Messenger Monitor Sniffer: lấy ở http://www.immonitor.com/download/yahoomonitor.exe OK. Nhớ là cài đặt đầy đủ vô máy nhé (đừng có hỏi tui là cài làm sao, cái này bạn phải tự biết). Let’s go. Một vài hình ảnh trước khi bắt đầu tấn công: Hình trên là ARP cache (để xem dùng lệnh apr -a) của máy A trước khi bị tấn công. Internet Address chính là địa chỉ IP, còn Physical Address chính là địa chỉ MAC. Địa chỉ 192.168.1.1 là địa chỉ IP của modem ADSL (đóng vai trò máy B), có địa chỉ MAC là 00-01-38-56-fc-eb, còn địa chỉ 192.168.1.3 là địa chỉ IP của máy Attacker (máy tui nè), có MAC là 00-16-d3-fd-99-a2. Địa chỉ IP của máy A là 192.168.1.2 (ở dòng Interface đó ). Bây giờ chạy Cain & Abel. Giao diện thằng Cain nè: OK. Nếu máy bạn chỉ có 1 card mạng thì không cần làm bước bên dưới. Vì máy tôi có nhiều card mạng nên cần phải chỉ định card mạng sẽ dùng. Bấm vào menu Configure để mở cửa sổ Configuration và chọn card mạng (chọn cái nào có IP trùng với IP mình đang có). Bấm OK. Tiếp theo, chọn tab Sniffer ở trên, sau đó chọn tiếp tab Hosts ở dưới. Bấm tiếp vào biểu tượng thứ 2 từ bên trái qua, ngay bên dưới cái logo Cain (bạn sẽ thấy nó lõm vào). Bấm tiếp vào dấu cộng (+) màu xanh. Cửa sổ MAC Address Scanner hiện ra. Để mặc định và bấm OK. Bước này ta sẽ quét tất cả các địa chỉ IP và địa chỉ MAC của tất cả các máy trong cùng mạng LAN. Kết quả thu được: Ủa, cái thằng 192.168.1.4 ở đâu ra vậy kìa??? He he, có gì khó hiểu đâu, cái thằng ở cùng phòng với tui nó mới đi chơi về, giờ nó mở máy tính lên nên tui quét được địa chỉ máy nó luôn đó mà. Chuyển tiếp qua tab ARP (cạnh tab Hosts) Bạn nhấp chuột vào ô trắng phía trên để kích hoạt dấu cộng (+) màu xanh. Bấm vô cái dấu cộng (+) đó. Màn hình sau xuất hiện: Chọn địa chỉ IP của máy A (192.168.1.2) ở bên tay trái, sau đó chọn địa chỉ máy B (192.168.1.1) ở bên phải. Bấm OK. Bây giờ mới là bước thực sự tấn công nè. Bạn bấm vào biểu tượng tròn màu vàng cạnh biểu tượng bạn mới bấm lõm xuống hồi nãy, biểu tượng này: Nhìn lại cửa sổ Cain, bạn sẽ thấy địa chỉ của máy A với Status là Poisoning (đang đầu độc). Rồi, bạn cứ để đó cho Cain làm nhiệm vụ. Ta quay lại với máy A xem điều gì đã xảy ra: Ô kìa, bạn đã thấy sự khác lạ rồi đó. Bây giờ địa chỉ MAC của máy B đã bị đổi thành 00-16-d3-fd-99-a2 (là địa chỉ MAC của Attacker) chứ không còn là 00-01-38-56-fc-eb như ban đầu nữa. Bây giờ mở chương trình Yahoo Messenger Monitor Sniffer lên. Giao diện em nó đây: Cũng tương tự như đối với Cain, nếu máy bạn có nhiều card mạng, bạn phải chọn card mạng sẽ lắng nghe thông tin. Bấm vào menu Option, chọn Select Adapter và chọn card mạng ứng với địa chỉ IP mà mình đang có. Đây là cửa sổ chat trên máy A: Còn đây là kết quả ta thu được (tất nhiên là trên máy Attacker): Đến đây thì ta đã hoàn toàn bắt được các thông tin chat của người ngồi ở máy A. Có bạn hài lòng, tuy nhiên cũng sẽ có bạn cắc cớ hỏi: “Ủa, sao hình ở trên gõ có 1 lần mà mình lại bắt được tới 2 lần?”. Câu trả lời là vì thông tin chat này từ máy A đến máy Attacker, sau đó Attaker sẽ chuyển tiếp đến cho máy B (modem ADSL) nên nó sẽ bị nhân lên gấp đôi. Vậy có giải pháp nào để chống lại việc bị đánh lừa địa chỉ MAC như vậy không? Câu trả lời là có. Khi đó, bạn sẽ phải gán tĩnh (cố định) địa chỉ MAC ứng với địa chỉ IP bằng câu lệnh: arp -s <địa chỉ IP máy B> <địa chỉ MAC máy B>, Ví dụ: arp -s 192.168.1.2 00-01-38-56-fc-eb