text:
12. Information... What for? - I
Mấy tuần qua tôi quá bận rộn nên đã 'lờ' khá nhiều mail và offline messages từ bộ ba 'cuti', 'haothu' và 'docco' và tất nhiên tôi cũng lờ khá nhiều mail từ những người khác.
Tôi được nghỉ bù liên tiếp ba ngày (cộng với hai ngày cuối tuần là năm ngày). Dự định sẽ đưa gia đình đi chơi đâu đó, không ngờ trời đổ mưa tầm tã cho nên đành phải thúc thủ trong nhà. Tôi quyết định online để đọc mail, trả lời mail và xem offline messages. Như dự đoán, tôi có hàng trăm email trong inbox và hàng 'tấn' offline messages. Đang trong lúc thong thả đọc và trả lời từng cái (đáng trả lời), YIM bỗng nhiên báo 'cuti' vừa vào. Tôi hết sức ngạc nhiên vì lúc này bên VN mới có 7 giờ sáng. Không hiểu 'cuti' làm gì mà mò vào YIM sáng tinh mơ như thế. Tôi bèn gởi anh chàng một message:
"Hello Hưng, làm gì mà mò lên đây sớm quá vậy?"
Trong tích tắc, tôi nhận được hồi báo:
"Ui trời, hôm nay là ngày gì mà đặc biệt vậy? Sao giờ này anh lên đây, bộ anh không đi làm sao?"
Tôi đáp:
"À, anh được mấy ngày nghỉ bù, định đi chơi đâu đó nhưng trời đang mưa tầm tã nên lên web dạo chơi :). Còn em làm gì mà dậy sớm vậy?"
'cuti' trả lời có vẻ uể oải:
"Dạ, đáng lẽ hôm nay em đi học nhưng bị cúm mấy hôm nay, trong người còn thấy nhừ quá nên ở nhà. Em dậy hồi sớm à. Nằm hoài trong giường buồn quá nên mò lên net chơi. Vậy anh em mình 'đà khía' lai rai được hông anh?"
Tôi cười, đáp:
"Nếu trời cứ mưa thì anh em mình tha hồ mà 'đà khía' nhưng trời tạnh mưa thì anh sẽ dẫn mấy thằng nhóc đi chơi. Em muốn 'đà khía' gì đây?"
'cuti' khoái chí:
"Hi hi, em muốn trời mưa hoài. Anh em mình 'đà khía' chuyện gì mà không được anh? Chuyện trên trời, dưới đất cho vui mà. À, em có một chuyện cũng buồn cười lắm. Anh muốn nghe không?"
Tôi ngần ngừ:
"Èm... cũng tùy chuyện đó là chuyện gì nữa em. Nếu em nghĩ là anh thích nghe thì em kể đi."
'cuti' bẽn lẽn"
"Cũng chẳng có gì đặc biệt đâu anh. Chuyện em với con 'ghệ' bồ đó mà."
Tôi đáp:
"Ui trời, 'nàng tiên của lòng anh' mà sao gọi là 'con ghệ' vậy em? ;-)"
'cuti' cười, trả lời câu hỏi của tôi:
"Anh không biết đó thôi, đó là cách gọi thân mật và âu yếm đó thôi mà."
Tôi trả lời:
"Ái chà... có lẽ anh lỗi thời rồi. Anh mà gọi bà xã anh là 'con ghệ' thì chắc nguy to ;-). Ừa, em kể đi, có chuyện gì với 'con ghệ' mà em có vẻ phấn khởi vậy?"
'cuti' bắt đầu:
"Anh còn nhớ hồi bữa, lần cuối cùng bốn anh em mình 'đà khía' hông? Thật ra hôm đó em có hẹn với 'con ghệ' nhưng em quyết định cho nó leo cây. Ai biểu tắt di động làm chi, em gọi hoài không được nên... xù."
Tôi thắc mắc:
"Tắc di động là tắc thế nào em? anh không hiểu lắm."
'cuti' phát biểu:
"Kiểu này anh phải về VN làm một khóa tu từ đi anh, 'di động' là điện thoại di động đó. Hì hì."
Tôi đáp:
"À... hoá ra là thế. Anh cứ ngỡ con mèo di động hay con chuột di động gì đó ;-)"
'cuti' tiếp tục:
"Em phải dùng từ cẩn thận không thì lại bị anh kê cho. Tối hôm đó, 'con ghệ' đợi hoài không thấy em đến nên nổi 'khùng' lên. Điện thoại di động em thì hết pin mà cũng chưa kịp sạc nữa. Thế là ẻm bèn phóng xe đến nhà em. Chưa giáp mặt, đã mắng em xối xả vì em đã cho bả leo cây."
Tôi xen vào:
"Vậy là tốt rồi, 'nường' còn chịu khó phóng xe đến nhà em để mắng thì không có gì trầm trọng. Rồi sao nữa."
'cuti' cười, nói tiếp:
"Hì hì, anh không rõ đó thôi. Con bồ em tánh nóng như lửa, có gì là huỵch toẹt ra hết. Lúc đó nghe thì cũng ngứa con ráy lắm nhưng riết cũng quen. Nó buộc tội em là mê net, mê chat với 'con quỷ cái' nào đến nỗi phải cho nó leo cây. Em cố sức phân trần nhưng không hiệu quả. Rốt cuộc em phải cho nó xem nội dung mấy anh em mình 'đà khía' nó mới chịu yên."
Tôi cười:
"Hì hì, hoá ra trước đó em chưa hề kể cho 'con ghệ' nghe về mối quan hệ 'bất chính' của mấy anh em mình sao?"
'cuti' trả lời:
"Dạ, em định kể cho nó nghe nhiều lần nhưng cứ mỗi lần đi chơi mà đề cập đến tin học, đến máy tính là nó gạt phăng đi. Nó nói "bộ ôm máy cả ngày, cả tuần chưa đã nư sao mà hễ mở miệng ra là máy tính, máy tính" nên em... im luôn."
Tôi đáp:
"Thú vị lắm. Vậy sau đó thế nào em?"
'cuti' cười hớn hở:
"Dạ sau đó thì tụi em đi uống nước một chút rồi về. Lúc mấy anh em mình kết thúc thì bên đây mới có 7 giờ tối chớ mấy anh. Thế là trong lúc đi uống nước, 'con ghệ' cứ đem chuyện mấy anh em mình 'đà khía' ra hỏi dồn. Em nói với nó là em có lưu lại nội dung anh em mình chat, để em cho nó một bản để đọc cho khỏi thắc mắc."
Tôi đáp:
"Ừa, con gái là chúa tò mò mà em. Cái gì càng dấu, càng thích tò mò ;-)."
'cuti' cười hi hi, rồi nói tiếp:
"Chưa hết. Sau khi em đưa cho nó cái file chứa nội dung anh em mình chat, mấy ngày sau nó nhất định đòi em phải giới thiệu anh cho nó. Nó cũng muốn tham gia 'đà khía' với mấy anh em mình luôn. Em nói là em sẽ chuyển lời nhưng em không hứa gì hết."
Tôi cười ghẹo 'cuti':
"Hì hì, được dịp trả đũa nên làm khó 'nường' hay sao đây? Hoá ra là chuyện con bé muốn tham gia :). Thì cứ dẫn 'nường' lên 'đà khía' chung chớ có gì quan trọng đâu em?"
'cuti' trả lời:
"Em nói thiệt mà anh. Em không thể hứa gì nó vì em không biết hay sẽ nói gì. Lỡ may em đề nghị và anh phán con gái, con lứa mà bày vẽ, lắm chuyện thì có quê cả đám hông à."
Tôi đáp:
"Có gì mà không ok em. Kêu nó tham gia cho vui chớ có sao đâu à."
"cuti" trả lời:
"Dạ, để em báo cho nó biết. 'Con gái, con lứa' mệt lắm anh ơi, khi thế này, khi thế kia, chẳng biết đường nào mà mò."
Bên ngoài mưa đã ngớt. Tôi đoán mấy thằng nhóc của tôi sắp sửa vòi vĩnh chuyện đi chơi đây. Cho nên tôi cho 'cuti' biết:
"Có lẽ anh sẽ đi chơi với mấy thằng nhóc. Trời bên này đã tạnh mưa rồi em. Chiều tối nay anh ở nhà, nếu thích em rủ đám Khoa, Duy và 'con ghệ' vào đà khía cho vui."
"cuti" hớn hở:
"Dạ, vậy thì vui quá. Em bệnh nằm nhà hoài chán quá. Được đà khía vậy thì quá đã. Để em điện cho tụi nó liền. Vậy khoảng mấy giờ anh lên?"
Tôi phỏng chừng:
"Anh đoán khoảng 4, 5 giờ chiều bên em đó, có tiện không?"
'cuti' chậc lưỡi đáp:
"Chậc chậc... hơi kẹt đó anh. Bọn em thì dễ nhưng con Như chắc kẹt vì em đoán giờ đó nó phải nấu cơm chiều rồi. Thôi kệ nó vậy. Khi khác cho nó tham gia cũng được."
Tôi 'chỉnh' 'cuti':
"Hèm... nó là girl friend của em mà cứ 'con' với 'nó' nghe hông 'ngọt' tí nào hết em. Vậy ngày mai khoảng 2 giờ trưa bên em được hông?"
'cuti" trả lời:
"Dạ, 2 giờ trưa thì chắc ok rồi anh. Nó có lên trễ một tí cũng không sao. Còn chuyện 'nó' với 'con' em bị quen miệng rồi anh ơi. Gọi thế nào cho ổn đây anh?"
Tôi đáp:
"Kêu bằng tên đi em và cũng không cần phải đệm thêm chữ 'con' :). Rồi, 2 giờ trưa bên em hả? Anh đi đây."
'cuti' phàn nàn:
"Dạ chào anh. Đúng là anh già khó tính, thêm chữ 'con' cũng không được ;-)."
Tôi logoff.
----------------------------
Chiều hôm sau, như đã hẹn, tôi lại logon YIM. Khi vào, tôi thấy hai khuôn mặt 'vàng khè' của 'cuti' và 'docco' cộng thêm một 'request for accept' của một người có cái nick khá ngộ nghĩnh và bí hiểm là ccxx kèm theo thông điệp ngắn gọn: "Dạ em là Như đây, bạn của Hưng, Khoa và Duy đó anh. Anh add em được không ạ?". Hiển nhiên là 'cô bồ' của 'cuti' nhà mình. Tôi nhấn nút "accept" và một khuôn mặt 'vàng khè' trên cái nick ccxx hiện ra trên danh sách YIM của tôi. Chẳng thấy 'haothu' đâu cả, hay anh chàng đang 'invisible'?
Trong tích tắc, một "conference invitation" được ccxx gởi đến. Trong khi nhấn nút "Accept", tôi thầm nghĩ "chà, cô bé này có vẻ nhậm lẹ đây".
Trong 'conference room' có 'cuti', 'docco' và 'ccxx' nhưng chẳng thấy bóng dáng 'haothu' đâu cả. 'ccxx' lên tiếng:
"Chào 'anh già khó tính' ạ. Em xin tự giới thiệu em là Như. Rất vui được làm quen với anh."
Tôi mỉm người, tự nhủ "con bé liếng quả nhỉ" và đáp lễ:
"Chào Như, cũng bắt chước cu Hưng gọi anh là 'anh già khó tính' sao? Còn 'haothu' đâu rồi mấy đứa?"
'ccxx' trả lời lẹ làng:
"Dạ, em nghe nói nó bị kẹt. Không rõ bị kẹt gì mà không online được anh."
Lúc này 'cuti' và 'docco' mới lên tiếng:
"Chào anh già khó tính, anh đi chơi với mấy nhóc có vui không?"
"Chào anh D, mới có vài tuần mà em thấy như hàng tháng vậy. Anh khoẻ không?"
Tôi đáp:
"Ừa, đi chơi cũng vui lắm em. Anh cũng khỏe, còn em dạo này sao Duy?"
'docco' trả lời:
"Dạ em cũng bình thường anh. Dạo này em đọc nhiều hơn và ít đi chơi hơn :)"
Tôi đáp:
"Tốt quá vậy? Anh tin là em 'luyện' được mấy 'tầng nội công' rồi đó :). Ừa, nãy giờ anh thử đoán cái nick ccxx là cái gì. Anh nghĩ là đoán đúng hông chừng."
'ccxx' cười khoái chí:
"Anh đoán ra được em phục lăn liền đó. Hồi giờ chưa có ai đoán ra được cái 'bí ẩn' đằng sau cái nick này đó anh."
Tôi cười, đáp:
"Ừa, nếu vậy dám anh đoán sai lắm đó. Anh nghĩ ccxx là 'công chúa xấu xí' phải không?"
Cả ba 'cuti', 'docco' và 'ccxx' cùng trả lời gần một lượt:
"Ồ"
"wow"
"độc thiệt"
và 'ccxx' nói tiếp:
"Sao anh đoán một cái là trúng phóc liền dzị? Em thiệt là phục lăn đó. Mấy người trên mạng toàn liên tưởng cái nick của em đến những thứ bậy bạ không à."
Tôi đáp:
"Chắc là mấy 'anh chàng' trên mạng đoán được nhưng không dám nói, sợ em giận vì nó có hai chữ 'xấu xí' bên trong. Anh nhìn qua chữ ccxx tự nhiên anh liên tưởng ngay đến 'công chúa xấu xí' liền. Nhưng mà, ccxx có gì mà liên tưởng đến những thứ bậy bạ vậy em?"
'ccxx' phụng phịu:
"Anh không biết đó thôi. cc là credit card chùa đó anh, còn xx là mấy thứ... ùm.... à... tầm bậy tầm bạ đó. Thôi, em không nói nữa. À nhưng mà anh không sợ em giận sao mà nói thẳng hai chữ 'xấu xí' dzị? :)"
'docco' xen vào:
"Thì xấu thì chấp nhận xấu chớ có gì mà giận cà."
'ccxx' phản công:
"Còn ông nữa, còn chừng ông nghe ông."
Tôi cắt ngang:
"Hì hì, anh nghĩ hai chữ 'xấu xí' đó thật ra hàm chứa một chút kiêu hãnh ngầm đó thôi. Có ai tự cho mình 'xấu xí' bao giờ? Nếu có thì cũng 'ngầm' khen mình 'xinh đẹp' ;-). Bởi vậy, anh chẳng ngại nói ra hai chữ này. Riêng với những người liên tưởng cái nick của em thành những thứ bậy bạ thì chính họ thiệt thòi thôi. Đừng để ý làm gì."
'ccxx' thốt:
"Kinh khủng, kinh khủng. Em đọc những lời anh đối thoại với đám Hưng, Khoa, Duy đã thấy miệng lưỡi của anh kinh khủng. Giờ trực tiếp nói chuyện mới thấy quả là không sai :). Thôi, em nghĩ ngoài việc 'đà khía' chuyện tin học, máy tính, anh nên huấn luyện ông Duy một khoá 'ái tìn' đi anh. Ông này cũng tốt mã, học giỏi mà sao vẫn chưa có một 'miểng tìn rách rưới' nào hết. Em bảo đảm anh huấn luyện cho ổng một khoá là thành công ngay."
'docco' luống cuống:
"Thôi.. thôi.. đi bà. Cho tui xin mà. Nhưng không cái gì mà 'tìn tìn' trong này. Thôi anh, mình nói chuyện tin học vui hơn."
'ccxx' cười ré lên:
"hi hi hi, tui đoán mặt ông Duy lúc này đang đỏ như 'mặt trời bé con' đó. Thôi, tha cho ông một lần đó. Vậy mấy anh em mình nói chuyện gì đây?"
'cuti' lúc này mới lên tiếng:
"Anh thấy... anh thấy Như hoạt bát hông anh? Hay để Như chọn đề tài được đó."
Tôi cười, đáp:
"Hì hì, anh thấy 'nhà' em hoạt bát lắm, muốn 'lăng xê' nàng liền hả? Hy vọng sẽ có nhiều chuyện lý thú đây :)."
'ccxx' phát biểu một câu thật ngắn rồi bỏ dở:
"Em công nhận anh nói chuyện 'kinh' thiệt.... [/i]
'docco' cười thích thú:
"Hi hi, cám ơn anh D gỡ dùm em một quả. Em dám chắc lúc này mặt bà Như đỏ hơn 'mặt trời bé cha' nữa ;-)"
Chỉ qua vài câu đối thoại, bọn tôi đã trở nên thoải mái như đã quen thân nhau từ lâu. 'docco' hình như muốn cắt ngắn những chuyện cà rỡn để bắt đầu 'đà khía' những chuyện cu cậu thắc mắc. 'docco' lên tiếng:
"Thôi, 'đả qua đả lại' một hồi coi chừng thế chiến thứ III bắt đầu bây giờ. Mình nói chuyện khác đi hả bà con?"
'docco' nói tiếp:
"Em có tham khảo qua các vấn đề thuộc về reconnaissance rồi đó anh nhưng em thấy có nhiều điểm lờ mờ quá. Em thấy có cái thì gọi là 'enumeration', cái thì gọi là 'interrogation', cái lại gọi là "reconnaissance". Em thử so sánh thì thấy rằng chúng cùng phục vụ cho mục đích thăm dò. Vậy cái nào là cái nào đây anh?"
Tôi cười, đáp:
"Hì hì, nhảy ngay vào kỹ thuật hả? Chắc em sợ mình lại 'lạc đề' sang những chuyện khác chớ gì? Đúng là những thuật ngữ em liệt kê ra ở đây đều tựu trung vào tinh thần chung: thăm dò. Reconnaissance dịch sát nghĩa là 'khai thác thông tin' và 'interrogate' và 'enumerate' dính líu trong tiến trình khai thác này. Trong đó, 'interrogate' dịch sát nghĩa là 'hạch hỏi' và 'enumerate' là 'đếm'. Nắm được những thuật ngữ này cũng có ích để hiểu sâu từng phân đoạn của quá trình thăm dò. Tuy nhiên, nếu em cảm thấy bối rối với những thuật ngữ này thì khoan hẵng tìm cách 'dịch' chúng sang tiếng Việt vì có những từ dịch không được hoặc không đủ lột tả tinh thần. Cứ tiếp nhận chúng như những thuật ngữ vậy thôi. Sau này em sẽ rõ hơn."
'ccxx' xen vào:
"Thôi để anh già và Duy đối thoại hén? Em với Hưng ngồi nghe. Có gì thắc mắc bọn em tham gia sau."
'docco' trả lời gọn lỏn:
"Ừa, vậy càng tốt. Đỡ bị loãng."
Rồi hỏi tiếp:
"Vậy tóm lại quá trình thăm dò bao gồm những bước chính nào vậy anh? Và tại sao phải thực hiện những bước này?"
Tôi đáp:
"Đáng lẽ ra anh phải hỏi em câu hỏi này để giúp em tổng hợp những gì em đã đọc. Tuy nhiên, em có vẻ khá bối rối với những thuật ngữ kia. Anh e rằng em đang rối... tùng phè lên trong đó nên để anh tóm tắt luôn vậy.
Thật ra không có một luật nào bắt buộc phải thao tác đúng từng bước để phục vụ mục đích thăm dò cả. Tùy mục tiêu và tùy khả năng phòng bị và thắt chặt của mục tiêu mà khai triển kế hoạch thăm dò cho thích hợp. Anh nghĩ mình có thể tóm gọn chúng lại thành ba phần chính:
- tìm dấu ấn (footprinting) --> xác định mục tiêu tổng quát
- rà quét (scanning) --> xác định các dịch vụ tổng quát
- lấy số liệu cụ thể (enumerating) --> thu thập thông tin cụ thể.
Em thử suy luận xem, tại sao phải tìm dấu ấn? tại sao phải rà quét và tại sao phải thu thập thông tin cụ thể?"
'docco' rụt rè:
"Dạ... em nói đại nghe? Tìm dấu ấn để xác định hệ điều hành nào mình đang đối diện nhằm thu hẹp biên độ dò tìm và khai triển bước kế tiếp được chính xác hơn. Còn rà quét thì em nghĩ... đã tiến tới một bước rất cụ thể là tìm xem có những dịch vụ nào đang được cung cấp trên mục tiêu mình muốn thăm dò để thiết lập kế hoạch thâm nhập. Còn lấy số liệu cụ thể... ùmm... à... em không biết nữa."
Tôi cười, cổ vũ 'docco':
"Em trả lời hai phần đầu vậy là súc tích và chính xác lắm rồi. Tất nhiên phần thứ ba là phần lấy kết quả, là phần kết thúc quá trình thăm dò chớ còn gì nữa em? Bước này càng cụ thể hơn bước thứ nhì là mình dùng nó để thiết lập bước thâm nhập. Vậy mình có thể thêm vào bảng liệt kê ở trên như sau:
- tìm dấu ấn (footprinting) --> xác định mục tiêu tổng quát --> thu hẹp biên độ thăm dò
- rà quét (scanning) --> xác định các dịch vụ tổng quát --> thiết lập kế hoạch thâm nhập
- lấy số liệu cụ thể (enumerating) --> thu thập thông tin cụ thể --> thiết lập bước thâm nhập
Em thấy có gì đặc biệt với bảng liệt kê này không?"
'ccxx' xen vào:
"Càng lúc càng cụ thể phải không anh?"
Tôi đáp:
"Đúng rồi đó em. Càng lúc càng cụ thể và càng cụ thể càng tốt. Thật ra 3 'bước' ở trên có thể kết hợp lại thành 1 'bước', cũng có thể tách rời ra làm 2 'bước' hoặc mở rộng ra thành... mấy chục bước. Với mục đích dò tìm thông tin thì miễn sao tìm được thông tin cụ thể và chính xác là được, không nhất thiết phải theo... 'bước'."
'cuti' thắc mắc:
"Nhưng tại sao tìm footprint lại quan trọng thế anh? Em thấy một web server apache chạy trên Windows 2000 và một web server apache chạy trên Linux đâu có khác gì đâu anh?"
Tôi đáp:
"Nếu nhìn một cách tổng quát trên phương diện người dùng thì nhận định của em không sai nhưng nếu xét cẩn thận về mặt kỹ thuật thì nhận định của em chưa.... hoàn toàn đúng. Trên phương diện người dùng, cả hai apache (em đưa ra) đều nhận request, xử lý request, đều có thể gắn với asp, jsp, php, cgi... để tạo trang động nhưng xét cho cặn kẽ thì cơ chế quản lý bộ nhớ lẫn cơ chế điều tác process trên hai hệ điều hành khác nhau rất xa. Những khác biệt này dẫn tới chiến lược phòng thủ hay tấn công rất khác nhau. Việc nhận diện dấu ấn của mục tiêu không chỉ giúp giới hạn biên độ thăm dò và khai thác mà nó còn trực tiếp ảnh hưởng đến việc:
- quyết định 'tấn công' hay 'rút lui' (nói theo phương diện tấn công) hoặc,
- quyết định 'thắt chặt thêm' hay 'xây dựng lại từ đầu' (nói theo phương diện phòng thủ)."
'cuti' vẫn thắc mắc:
"Em vẫn thấy vấn đề này hơi mù mờ đó anh. Nếu cần tấn công một webserver apache có chạy php chẳng hạn thì cũng bấy nhiêu kỹ thuật như sql inject, xss... vậy thì chạy trên Windows hay trên *nix đâu có khác gì?"
Tôi trả lời:
"Em nói đúng nhưng cái đúng này bị áp đặt trong một giới hạn khá hẹp. Tấn công và thâm nhập một dịch vụ (web chẳng hạn) không chỉ dừng lại ở sql inject và xss. Đây là những kỹ thuật phổ biến và dễ thực hiện, hơn nữa những lỗi này lại thường thấy nên thường được chú trọng. Nếu 'tấn công' chỉ dừng lại ở chỗ 'chôm' được admin password của một forum hay đưa lên một thông điệp trên một trang web để 'deface' thì mấy kỹ thuật em đề cập đã đủ dùng. Nếu thế thì phạm vi reconnaissance ở đây rất nhỏ hoặc không cần thiết nữa. Những điều anh đưa ra ở đây có thể dùng để ứng dụng nhiều khả năng và kỹ thuật thâm nhập hơn nữa, cho nên reconnaissance trở nên cần thiết. Ví dụ, em muốn chạy shellcode đến dịch vụ web của server để lấy một cái 'shell' cho mục đích thâm nhập sâu hơn nhưng không xác định chính xác hệ điều hành của mục tiêu thâm nhập là gì thì không có cách gì tạo shellcode được. Lý do, shellcode của mỗi hệ điều hành mỗi khác.
Nếu mục tiêu thâm nhập càng sâu thì quá trình reconnaisance đòi hỏi càng phải cẩn thận và chi tiết. Ngay cả những 'màn' tấn công thuộc loại 'dơ' như DoS chẳng hạn, để thực sự 'giết' mục tiêu mình muốn DoS, em phải hiểu rất rõ điểm yếu của hệ điều hành và dịch vụ đang chạy. DoS 'chết' một Windows server chạy Apache + php (dùng prefork) và không có database connection pool nhanh hơn DoS chết một Linux server chạy Apache + jsp (dùng worker) và có connection pool hẳn hòi. Những chi tiết này ở đâu ra? Đó chính là kết quả quả 'reconnaissance' đó em.
Năm ngoái, một server do anh quản lý (chạy Linux) bị mấy 'ông thần' nào đó dùng 'ping of death' để tấn công. Điều buồn cười là dạng 'ping of death' này dành cho Windows phiên bản cũ, bị lỗi ở phần giới hạn packet size của ICMP làm treo máy khi bị tấn công. Anh không hiểu sao nhóm này cứ hè nhau mà tấn công Linux server của anh bằng một thứ công cụ dành để tấn công Windows. Hơn nữa, Linux server của anh hoàn toàn cản mọi inbound ICMP và UDP. Các gói tin ICMP và UDP chỉ có thể đi vào khi chúng mang vai trò trả lời cho các request đi từ bên trong Linux server mà thôi. Điều này có nghĩa những gói ICMP họ 'tia' vào server của anh bị huỷ ngay khi đụng firewall. Vậy mà nhóm này vẫn nhắm mắt, nhắm mũi 'tia' đến mấy tiếng liên tục rồi mới chịu ngưng. Tất nhiên dạng tấn công như thế chẳng làm suy suyển server của anh mảy may nào hết. Điều đáng nói là nguồn tấn công hoàn toàn đi từ VN ra và điều đáng buồn là những 'ông thần' này không thèm tìm hiểu xem 'ping of death' là gì, thật sự đã tạo ra tác hại gì đến server của anh không. Có lẽ mấy 'ông thần' này tìm đâu ra mấy cái script viết sẵn trên Internet rồi hè nhau mà 'ria' vào server của anh chăng?"
'docco' lè lưỡi (một biểu tượng được dùng trên YIM) rồi lên tiếng:
"Ái chà, bây giờ em mới hiểu lý do tại sao reconnaissance lại quan trọng như thế. Lúc đọc tài liệu, em cứ ngỡ đây là những bước cần phải làm cho đúng nguyên tắc và chẳng thấy có phân tích mấu chốt của reconnaissance là gì hết. Em cũng có đọc sơ sơ qua về shellcoding và thấy hoàn toàn mù tịt. Còn chuyện mấy 'ông thần' tìm đồ chơi trên mạng rồi đi 'ria' là chuyện thường ngày mà anh? :)"
Tôi đáp:
"Anh nghĩ sách vở thường giới thiệu những điểm chung nhất và dễ tiếp nhận nhất. Sau khi thử nghiệm, tự nhiên em sẽ 'ngộ' ra lý do của từng phân đoạn trong cả một quá trình thực hiện. Những người càng kinh nghiệm về bảo mật thì bước thăm dò của họ càng chiếm nhiều thời gian. Đối với một kẻ có chủ trương 'tấn công', hắn phải dò xét hết sức cẩn thận trước khi bắt tay vào thực hiện ý định của mình để đạt được mục đích, ít tốn thời gian, ít có cơ hội bị... tóm. Cũng lắm lúc, kẻ này bỏ cuộc vì sau khi dò xét cẩn thận, hắn cảm thấy không đáng để mất thời gian. Đối với người phòng thủ, quá trình 'dò xét' lại càng khó hơn bởi vì người phòng thủ phải đặt mình vào vị trí khách quan, phải test hệ thống của mình y như một 'black box' thật sự rồi từ đó mới đi đến việc kiện toàn bảo mật."
'cuti' nhận xét:
"Nhưng làm sao mình có thể dò xét ra một server nào đó đang chạy Windows, dùng php và dùng prefork chớ không phải nó đang chạy Linux, dùng jsp và dùng worker vậy anh? Bộ 'reconnaissance' có thể cung cấp thông tin ở mức độ này luôn sao?"
Tôi cười, đáp:
"Cái này tùy vào khả năng thăm dò của em. Có nhiều yếu tố để giúp em đi đến chỗ kết luận là mục tiêu thăm dò của em có cái gì. Bởi vậy, như anh đã nói, giai đoạn reconnaissance có thể là giai đoạn mất thời gian nhất. Riêng chi tiết Windows chạy apache với php hay Linux chạy apache với jsp thì phần lớn em cần có một số kiến thức và dùng khả năng suy luận để đưa về một kết luận nào đó có lý nhất."
'cuti' càng thêm tò mò:
"Vậy có nghĩa là sao anh? anh nói sâu hơn một tí được không anh?"
Tôi đáp:
"Hèm... ok, để anh thử tóm gọn xem sao. Nếu em rành php, em hẳn biết là php trước phiên bản 5.x hoàn toàn không thread-safe. Ngay cả những người đang dùng php 5.x không không mấy ai 'dám' dùng ở chế độ 'thread-safe' cả. Nếu em dò một website và biết rằng nó chạy bằng php trên apache, em có thể đoán 99% là nó chạy ở chế độ prefork. Nếu em chịu khó dò thêm footprint của hệ điều hành và xác định được nó chạy trên Windows server thì em có thể xác định nó chạy php trên apache với chế độ prefork. Tương tự, nếu em dò một website và biết nó chạy bằng jsp, em có thể đoán 99% là nó chạy ở chế độ worker. Nếu xác định được thêm hệ điều hành là Linux thì em càng có thể khẳng định nó chạy jsp trên apache với chế độ worker. Tất nhiên, thu thập càng nhiều thông tin, càng giúp em khẳng định phỏng đoán của em chính xác và để thu thập nhiều thông tin thì 'reconnaissance' càng mất thời gian là vậy. Nên nhớ là luôn luôn có những sai số trong 'reconnaissance' vì người phòng thủ cố tình dấu footprint hoặc đánh lừa các công cụ em dùng để lấy footprint. Những sai số này càng nhiều thì kết quả càng ít đáng tin cậy."
'cuti' gật gù:
"Hoá ra đây là cả một nghệ thuật chớ chẳng đùa. Những kiến thức và kinh nghiệm cho việc xác định 'nó' chạy php hay jsp cũng đủ đã điên cái đầu rồi. Dân không đụng những chuyện này thì biết đường nào mà mò anh? Như vậy rõ ràng kiến thức có sẵn tuyệt đối quan trọng. Nếu không có thì ngay cả việc thăm dò cũng không thể được. Biết gì mà thăm dò?"
Lần này 'ccxx' góp chuyện:
"Thì bởi, em đọc những mẩu đối thoại của anh già khó tính và mấy ông tướng này, em thấy anh nhấn mạnh rất nhiều lần cái gọi là 'ngọn ngành'. Những mẩu thông tin nho nhỏ đều đi từ 'ngọn ngành' ra phải không anh?"
Tôi cười, đáp:
"Đúng đó 'công chúa xinh đẹp' :). Anh có lặp đi lặp lại nhiều lần: 'muốn bảo vệ hay tấn công, mình phải nắm rõ mục tiêu' là vậy đó. 'reconnaissance' chính là bước để giúp 'nắm rõ mục tiêu' ở khuôn khổ 'blackbox' vậy."
'docco' xen vào hỏi thêm:
"Khái niệm 'blackbox' là sao anh? Với lại 'prefork' khác gì với 'worker' vậy anh?"
Tôi đáp:
"Em chưa từng nghe qua 'blackbox' và 'whitebox' sao? Sẵn đây mình nên làm quen với khái niệm này luôn. 'blackbox' chỉ cho hoàn cảnh thử nghiệm một server mình hoàn toàn không biết gì về nó; mình chỉ ở bên ngoài, chọc ngoáy nó để tìm thông tin mà thôi. Trong khi đó, 'whitebox' là một server mình nắm rõ nó có những gì, nó hoạt động ra sao và cung cấp những gì. Những công ty tư vấn về bảo mật thường thử nghiệm độ bảo mật của hệ thống theo dạng 'blackbox' là chính. Họ không biết gì về hệ thống của khách hàng cả nhưng họ vận dụng mọi phương tiện để thẩm định độ bảo mật của hệ thống này. Sau khi hoàn thành giai đoạn 'blackbox' rồi họ mới đi đến giai đoạn 'whitebox' và mới giới thiệu phương án phòng thủ. 'whitebox' test thường dùng để thử nghiệm tính năng và hoạt động của hệ thống dựa trên một số thước đo nào đó.
Riêng 'prefork' và 'worker' thì thế này. Đúng ra mình phải dùng thuật ngữ 'process' và 'thread' thì thích hợp với tinh thần mình bàn ở đây hơn. Lý do anh dùng 'prefork' và 'worker' là vì mình đang nói về webserver apache và những thuật ngữ này là những thuật ngữ của apache. 'prefork' là cơ chế xử lý request của apache bằng cách tạo process. Process thì thường nặng nề, tốn tài nguyên và kém hiệu xuất nhưng được một điểm là rất bền, ít bị sự cố. Trong khi đó, 'worker' là cơ chế xử lý request của apache bằng cách tạo thread. Thread thì nhẹ nhàng, ít hao tốn tài nguyên hơn, hiệu xuất hơn nhưng lại có nhược điểm là kém bền bỉ, dễ bị sự cố. Nói trên bình diện bảo mật và đặc biệt là tính hiệu xuất cũng nhưng tính bền bỉ của một dịch vụ, mỗi chọn lựa đều có điểm ưu và khuyết. Tuỳ nhu cầu và hoàn cảnh mà chọn cho thích hợp."
'cuti' diễu:
"He he, đừng bắt bọn em phải học kỹ về thread và process đó nha anh. Chết tụi em đó :)"
Tôi đáp:
"Lại 'bắt' ;-). Anh chẳng bao giờ 'bắt' em phải làm gì cả. Đến một lúc nào đó, tự nhiên em cảm thấy cần phải hiểu về 'thread' và 'process' thì tự nhiên em tìm hiểu thôi. Lúc ấy anh có 'bắt' em không tìm hiểu cũng chả được. Nói đùa vậy thôi, nếu siêng, em nên tìm hiểu dần dần về 'thread' và 'process'. Theo anh, đây là một trong những 'đơn vị' nền tảng của những điều em đang làm quen đó."
'docco' cảm thán:
"Không ngờ từ chuyện này lại dẫn đến bao nhiêu là chuyện khác. Đúng là 'bể học mênh mông, dục tốc bất đạt' thật không sai tí nào."
Tôi cười, động viên 'docco':
"Thong thả thôi em, việc gì phải 'dục tốc' để rồi 'bất đạt'? Đừng tham quá mà đi đến chỗ 'bội thực' mà thôi."
'docco' hỏi tiếp:
"Vậy khái niệm 'active' và 'passive' recconnaissance mà anh đề cập lần trước liên quan thế nào đến 3 bước ở trên vậy anh?"
Tôi ngẫm nghĩ "chà, các 'bước' là các bước còn 'active' hay 'passive' là dạng. Làm thế nào để cu cậu đừng lẫn lộn đây nhỉ?", thế rồi tôi trả lời:
"Thế này, 'active' hay 'passive' là các dạng thăm dò, còn 3 bước ở trên là cụ thể các bước khai triển. Em có thể dùng dạng 'active' hoặc 'passive' hoặc cả hai dạng này để thực hiện 3 bước ở trên. Đây là mối liên quan mà em thắc mắc đó."
'cuti' nhanh nhảu:
"Vậy... ví dụ bước một, khi nào mình dùng 'active', khi nào mình dùng 'passive' anh?"
Tôi hỏi ngược lại:
"Vậy em còn nhớ mục đích của việc dùng 'active' và 'passive' để thăm dò không?"
'cuti' đáp:
"Dạ nhớ chớ anh. 'ative' chính xác hơn nhưng ít kín đáo hơn. 'passive' kín đáo hơn nhưng ít chính xác hơn. Nhưng ý em là trong lúc tìm footprint, khi nào thì thao tác 'passive', khi nào thì dùng 'active' đó mà."
Tôi chỉnh 'cuti' ngay vì không chịu suy nghĩ mà chỉ hỏi 'trơn':
"Em vừa trả lời ngay câu hỏi của em đó thôi. Nếu đã nắm được 'ative' chính xác hơn nhưng ít kín đáo hơn. 'passive' kín đáo hơn nhưng ít chính xác hơn thì tại sao không dùng nó mà ứng dụng? Anh nghĩ em nên động não hơn một tí đó Hưng."
'ccxx' xen vào:
"Anh nói đúng đó, ông Hưng này có cái tật dễ thì đâm lười đó anh. Anh quay ổng như 'dế' thì ổng sẽ động não thôi, đừng trả lời mọi câu hỏi của ổng là cách hay nhất. Em biết lắm mà :)."
Tôi cười, đáp:
"Ừa, em mà không biết cu Hưng 'lắm' thì còn ai biết nữa em? Thôi... em 'quay nó như dế' dùm anh nha?"
'ccxx' cười thích chí:
"Hi hi hi, anh hông biết đó thôi, em quay ổng như cơm bữa mà không thì 'dễ hoá lười' liền thôi."
'docco' có vẻ bồn chồn với những đối thoại thuộc dạng chit chat, cu cậu xen vào:
"E hèm... hơi bị... lạc đề á. Anh già ơi, cho em hỏi thêm cái này nha? Có bao nhiêu cách để xác định footprint vậy anh? Em đọc sách thấy có khá nhiều công cụ, vậy theo anh mình nên dùng cái nào?"
Tôi đáp:
"Anh không thể nói rõ có bao nhiêu cách vì anh không biết thật sự có bao nhiêu cách. Cái này tùy vào tính linh động và khả năng sáng tạo thôi em. Anh cũng không thể trả lời em là nên dùng công cụ nào. Chỉ có chính em tự tay dùng rồi chọn lấy một hoặc nhiều công cụ em thích mà thôi. Có những công cụ 'gom' luôn các công đoạn xác định hệ điều hành, xác định các dịch vụ đang chạy (open ports) thậm chí lấy luôn cả phiên bản của software cung cấp dịch vụ. Tuy nhiên, công cụ nào cũng có ưu khuyết điểm cả. Ví dụ nmap là một port scanner rất độc đáo, nó có thể thực hiện ba điều ở trên cùng một lúc nhưng nếu dùng không đúng mức thì nó sẽ rất 'ồn ào' vì nó không những 'active' mà 'extremely active'. Những hệ thống có trang bị IDS, IPS sẽ phát hiện ngay là có nmap đang dò dẫm và đây là điều bất lợi cho việc thăm dò."
'docco' phát biểu:
"À, vậy nmap là công cụ thuộc dạng 'active' rồi. Em phải ghi nhớ chuyện này."
Tôi cười, nói:
"Không hẳn là như vậy đâu em. Anh nói là nếu dùng không đúng mức thì nó sẽ rất 'ồn ào' cơ mà. Nếu em dùng nó đúng mức, nó không còn 'extremely active' nữa. Nó không phải 'passive' nhưng cũng không hẳn là 'active' bởi vì em không tạo ra nhiều 'tiếng ồn' trong khi rà (nếu dùng đúng mức)."
'cuti' cảm thán:
"Chẹp... chỉ có chuyện 'rà' không mà cũng lắm nguyên tắc và công phu đến thế. Chắc lại phải học thêm nmap roài."
Tôi đáp:
"Em có vẻ bồn chồn với chuyện làm quen với những công cụ mới hay sao vậy Hưng? người ta viết hàng ngàn dòng code, xây dựng hàng trăm signature, viết manual sẵn. Em chỉ có việc đọc và dùng mà còn rên rỉ sao em? Kiểu này bắt đầu nguy rồi đó."
'cuti' đính chính lia lịa:
"Hông, hông có đâu anh. Em thức sáng đêm để quậy còn được mà. Ý em sau mỗi lần nói chuyện với anh là có thêm hàng loạt thông tin mới, cả đống công cụ mới để thử, để làm quen. Em cảm thấy có một phần sức ép nào đó để đuổi bắt với thông tin anh đưa ra thôi anh."
Tôi cười:
"Hì hì, vậy em còn muốn 'hack' không? Anh cũng cảm thấy điều đó nên mấy anh em mình 'đà khía' ít thường xuyên hơn là thế. Em không nên nghĩ và tự tạo sức ép cho mình là phải thông thạo, phải nắm vững các thông tin mới mẻ ngay lập tức. Từ từ, thong thả thôi em."
'docco' hỏi tiếp:
"Hồi nãy anh nói đến vấn đề 'ồn', ồn ở đây là những dấu hiệu mà hệ thống phát hiện phải không anh?"
Tôi đáp:
"Đúng rồi đó em. 'Ồn' ở đây chính là những thông tin được ghi nhận trong các log files của hệ thống hay các hệ thống phát hiện gần như 'real time' như IDS/IPS đó. Mỗi dạng thăm dò thường có tính chất đặc thù và những đặc thù đó được ghi nhận trên các hệ thống phòng thủ, còn gọi là 'signature'. Nếu admin của hệ thống ấy bất thình lình thấy có hàng loạt cú 'rà' trên hệ thống của mình thì coi như mục đích thăm dò và thâm nhập của ai đó bị hỏng. Nếu admin không nhận thấy những dấu hiệu này mà IDS/IPS nhận thấy thì tình hình cũng chẳng khác gì mấy. Không riêng gì nmap mà tất cả các software em dùng, cái nào cũng 'ồn' cả thôi. Chỉ có cái khác là em 'thấy' hay 'không thấy' được cái 'ồn' đó thôi :). Để rà một máy con của một người đang duyệt web thì chẳng phải lo mấy đến cái 'ồn' cả vì họ hiếm khi 'thấy' được sự 'ồn' đó. Tuy nhiên, để rà và thăm dò một máy chủ, một mục tiêu đáng để thâm nhập hay đáng để bảo vệ thì mỗi chi tiết 'ồn' đều là dấu hiệu quan trọng."
'ccxx' thắc mắc:
"Để khỏi bị 'ồn', mình không cần thăm dò kỹ mà chỉ tấn công thẳng vào dịch vụ web thì sao anh?"
Tôi cười, đáp:
"Thì mình nắm phần thất bại nhiều hơn là thành công 'công chúa xinh đẹp' ạ."
'ccxx' phụng phịu:
"Ứ ừ, em hỏi thật mà anh cứ đùa hoài."
Tôi cười phá lên và tiếp tục:
"Á à, anh trả lời thật mà em cứ ngỡ anh đùa hoài. Mình tấn công thẳng vào dịch vụ web là tấn công thế nào em? Mình không nắm được nó mạnh, yếu chỗ nào thì mình chỉ 'đấm đá' kiểu 'bịt mắt' thôi thì có trúng trật vào đâu nào? Cái này cũng giống như trường hợp 'ping of death' anh nói hồi nãy thôi em. Nó cũng giống như muốn đục cánh cửa sắt của két tiền mà cứ dùng dùi đục bằng gỗ mà phang vào cửa sắt thì chừng nào thủng được cái tủ? :)"
'ccxx' giả lã:
"Hi hi, anh già vui tính ghê. Chắc em hỏi hơi ngớ ngẩn thật đa. Lần sau em sẽ uốn lưỡi 7 lần trước khi hỏi cho chắc ăn."
Tôi đáp:
"Không em, em cứ nói chuyện thoải mái. Có bất cứ ý nghĩ nào nảy ra trong đầu cứ phát biểu. Chuyện đúng, sai, ngớ ngẩn không quan trọng mà quan trọng ở chỗ em rút tỉa được những gì trước và sau khi đưa ra câu hỏi. Nếu em e dè quá thì cuộc đối thoại của mấy anh em mình sẽ 'khô' như rơm thôi."
'ccxx' trả lời:
"Dạ. Em cứ thế mà phang, anh chuẩn bị tinh thần đó nha."
'docco' xen vào:
"Không biết em nhận xét những cái này có đúng hông, anh xem thử nha. Ví dụ muốn khám phá các chi tiết thuộc về domain name của một host nào đó, mình có thể dùng một công cụ online để xem mà không cần tiếp xúc trực tiếp từ máy của mình đến DNS server của mục tiêu. Cái này gọi là thăm dò ở dạng 'passive' phải không anh?"
Tôi đáp:
"Đúng lắm. Nó hoàn toàn 'passive' bởi vì em chỉ 'query' thông tin một domain, một host nào đó trên một DNS database công cộng. Có thể DNS em đang query sẽ liên hệ với authoritative DNS server của mục tiêu em đang thăm dò để lấy thông tin, cũng có thể là không vì nó dùng thông tin có sẵn trong cache không chừng. Dù gì đi chăng nữa, đây vẫn là dạng 'passive' bởi vì admin cũng như hệ thống IDS của mục tiêu em muốn thăm dò đều không có cách gì biết được em đang thăm dò. Những thông tin này thường ở dạng tổng quát và dành cho công cộng. Nó cũng có ích để xác định một số điều. Tuy nhiên, để thăm dò DNS và hình thành cấu trúc mạng của mục tiêu, đôi khi em phải chuyển sang dạng thăm dò 'active'."
'docco' hỏi tiếp:
"Anh ví dụ một kiểu thăm dò DNS ở dạng 'active' được không anh?"
Tôi trả lời:
"Được chớ em. Thông thường, em dùng nslookup trên windows chẳng hạn, thì thế này:
C:>\> nslookup <server.domain.com>
Cách này query dùng default DNS server chính là DNS server nào em khai báo trên máy dùng để phân giải tên miền. DNS server này có thể là DNS riêng do em tạo ra hoặc DNS server do ISP cung cấp. Ở dạng đó, những điều được query cũng chỉ là những thông tin dành cho công cộng mà thôi (cái này còn tùy thuộc vào sự chặt chẽ của người thiết kế DNS, có những DNS chứa cả thông tin dàng cho công cộng lẫn thông tin dành riêng cho nội mạng và đây là điều nên tránh). Tuy nhiên, nếu em 'chịu khó' hơn một tí, thử như sau:
C:\> nslookup
> set type=ns
> domain.com
Server: [172.16.114.163]
Address: 172.16.114.163
domain.com nameserver = ns1.domain.com
domain.com nameserver = ns2.domain.com
ns1.domain.com internet address = 172.16.114.163
ns2.domain.com internet address = 172.17.124.174
> server ns1.domain.com
> ls -d domain.com
[[172.16.114.163]]
domain.com. SOA ns1.domain.com hostmaster.domain.com. (1098357511 16384 2048 1048576 2560)
domain.com. NS ns1.domain.com
domain.com. NS ns2.domain.com
domain.com. MX 0 mail.domain.com
www A 172.16.114.160
white A 172.16.114.161
mail A 172.16.114.162
ns1 A 172.16.114.163
ns2 A 172.17.124.174
domain.com. A 172.16.114.160
blue A 172.16.114.163
red A 172.17.124.174
domain.com. TXT "v=spf1 a mx ptr -all"
mail TXT "v=spf1 a -all"
domain.com. SOA ns1.domain.com hostmaster.domain.com. (1098357511 16384 2048 1048576 2560)
Có gì đặc biệt ở đây vậy em?"
'docco' ngần ngừ:
"Ùm... à.... hình như anh cố tình dùng chính DNS của chính mục tiêu để query phải không anh?"
Tôi đáp:
"Bravo! Đúng như thế, nó nằm ở đây:
> server ns1.domain.com
> ls -d domain.com .
Em biết lý do tại sao không? Ngày nay, hầu hết các authoritative DNS đều không cho 'zone transfer' một cách rộng rãi nữa vì quá nguy hại. Tuy nhiên, vẫn có các DNS server cho phép những DNS server được 'tin cậy' thực hiện 'zone transfer'. Bởi thế, mình mới 'láu cá' bằng cách mượn tay DNS server được 'tin cậy' để query thông tin cho mình :). Nên nhớ là có những DNS server (primary và secondary) hiện nay không còn cho phép thực hiện bước ở trên nữa vì họ không cho 'zone transfer' ngay cả giữa primary và secondary."
'cuti' thắc mắc:
"Query DNS có gì mà quan trọng đến thế hở anh? Nãy giờ em ráng theo dõi nhưng bắt đầu bị ù ù cạc cạc rồi đó. Có nhiều thông tin hoàn toàn mới mẻ đối với em cho nên tóm gọn lại, em không rõ tại sao phải thu thập những thông tin này và để có thể thu thập thông tin thì phải nắm bao nhiêu là kiến thức :("
'ccxx' xen vào:
"Trong khi anh nói, em cũng thử và thấy quả thật mình có thể thâu thập khá nhiều thông tin qua DNS. Có khi query được, có khi không. Hình như mình có thể xác định một cách tổng quát có bao nhiêu servers trong mô hình mạng mình muốn thăm dò. Em chưa rõ bước kế tiếp thế nào nhưng em hình dung mình sẽ làm gì đó với những thông tin thu thập được. Có thể dùng để phác thảo một mô hình mạng chăng?"
Tôi cười, đáp:
"Công chúa nhận xét đúng lắm. Tất nhiên là mọi thông tin đều cần thiết cả, nếu không mình mất thời gian với chúng làm gì? Để hình thành mô hình mạng của mục tiêu mình muốn thăm dò, việc thăm dò DNS chỉ cung cấp một phần thông tin mà thôi. Em cần phải kết hợp với một số thông tin khác nữa. Cái này mình sẽ bàn sau. Anh lấy ví dụ đơn giản thế này nha. Giả sử em muốn tấn công một host X nhưng host này 'thủ' chặt quá. Thông thường thì em bó tay và bỏ cuộc. Tuy nhiên, nếu em thăm dò rộng ra (bằng cách hình thành mô hình mạng) thì thấy rằng host X nằm trong một nhóm host khác và một vài host ấy có thể thâm nhập được. Nếu thâm nhập được một trong các host này thì cơ hội 'nhảy' sang host X thành công cao hơn.
Cho dù em không thể thâm nhập bất cứ host nào đi chăng nữa nhưng qua thông tin dò xét và thu thập được trong quá trình recconnaissance, em có thể đi đến kết luận là nên tiếp tục hay nên bỏ cuộc (để đỡ tốn thời gian). Nếu thấy mô hình mạng chặt chẽ quá, thấy có firewall vững vàng, cách tốt nhất là bỏ cuộc để đỡ mất thời gian. Thật ra, nếu đã thông thạo thì việc dò tìm thông tin xuyên qua DNS không mất quá nhiều thời gian đâu. Đây chỉ là một bước rất nhỏ trong quá trình thăm dò. Vấn đề mình bàn ở đây là để nhấn mạnh một điều quan trọng: tìm thông tin có rất nhiều cách, cách nào nhanh nhất, có thông tin cụ thể nhất thì đó là cách thích hợp nhất."
'docco' cảm thán:
"Không ngờ bên trong recconnaissance đã có những điều lý thú đến như thế. Em định hỏi thêm anh một số chi tiết về kết quả lấy được ở trên nhưng chợt nhớ ask me why, don't ask me what nên em đã ghi chú một loạt thông tin mà em cần phải tìm hiểu chi tiết sau. Cũng như Hưng, em bắt đầu thấy lùng bùng rồi đó anh. Như anh nói, vậy là recconnaissance cũng sẽ dính với chuyện dò dẫm cả firewall luôn sao anh? và đối với người phòng thủ thì nên làm thế nào? Về việc anh đề cập tới host X ở trên, hình như anh muốn nói đến khía cạnh kiện toàn bảo mật?"
Tôi trả lời:
"Chuyện dò dẫm firewall là chuyện không thể thiếu nếu như firewall nằm trên đường thâm nhập rồi đó em. Thong thả rồi mình sẽ bàn các chi tiết này sau, không thì em càng lùng bùng nữa. Chuyện phòng thủ thì mình cũng sẽ bàn sau khi em đã 'thông' những chi tiết mình vừa 'đà khía'. Nên nhớ rằng, 'thủ' ở đây là thực sự phòng thủ chớ không phải là những kỹ thuật nho nhỏ dùng để dấu footprint không thôi nha. Mình sẽ đào sâu từ từ những chuyện này (nếu bọn em còn hứng thú ;-) )."
'cuti' lên tiếng ngay lập tức:
"Làm sao mà không còn hứng thú được anh? Những thông tin này là tổng hợp của bao nhiêu điều lý thú. Chắc em sẽ không bao giờ thâm nhập ai nhưng những kiến thức này chắc sẽ ích lợi trong công việc về sau. Anh đừng lo tụi em hết hứng thú :)"
'docco' cũng chêm thêm:
"Hay là anh .... nản thì có. Nói chuyện với bọn em cái gì anh cũng phải giải thích. Gặp em, chắc em nản từ lâu rồi."
Tôi đáp:
"Hì hì, nản hả? có gì mà nản em? Thỉnh thoảng vào 'đà khía' thế này vui mà. Thôi, anh phải logoff đây. Ngồi dính một chỗ lâu quá rồi. Anh vẫn còn ở nhà vài ngày tới, trưa trưa anh sẽ vào check mail mỗi ngày, đứa nào muốn 'đà khía' thì offline message cho anh một cái ha."
'ccxx' cười, pha trò:
"Í cha, anh già rút... đẹp thiệt à nha. Ảnh rào câu áp chót, chuyển qua câu chót là bye bye liền :). Mai em cũng rảnh á, em sẽ online chờ anh."
'cuti' hùa theo:
"Em cũng vậy."
'docco' thận trọng:
"Nếu không có gì đột xuất, em cũng sẽ online luôn."
Tôi đáp:
"Ừa, cũng khoảng giờ này hoặc sớm hơn vào ngày mai hả? Chào mấy đứa."
26/9/2005
<còn tiếp>
Mấy tuần qua tôi quá bận rộn nên đã 'lờ' khá nhiều mail và offline messages từ bộ ba 'cuti', 'haothu' và 'docco' và tất nhiên tôi cũng lờ khá nhiều mail từ những người khác.
Tôi được nghỉ bù liên tiếp ba ngày (cộng với hai ngày cuối tuần là năm ngày). Dự định sẽ đưa gia đình đi chơi đâu đó, không ngờ trời đổ mưa tầm tã cho nên đành phải thúc thủ trong nhà. Tôi quyết định online để đọc mail, trả lời mail và xem offline messages. Như dự đoán, tôi có hàng trăm email trong inbox và hàng 'tấn' offline messages. Đang trong lúc thong thả đọc và trả lời từng cái (đáng trả lời), YIM bỗng nhiên báo 'cuti' vừa vào. Tôi hết sức ngạc nhiên vì lúc này bên VN mới có 7 giờ sáng. Không hiểu 'cuti' làm gì mà mò vào YIM sáng tinh mơ như thế. Tôi bèn gởi anh chàng một message:
"Hello Hưng, làm gì mà mò lên đây sớm quá vậy?"
Trong tích tắc, tôi nhận được hồi báo:
"Ui trời, hôm nay là ngày gì mà đặc biệt vậy? Sao giờ này anh lên đây, bộ anh không đi làm sao?"
Tôi đáp:
"À, anh được mấy ngày nghỉ bù, định đi chơi đâu đó nhưng trời đang mưa tầm tã nên lên web dạo chơi :). Còn em làm gì mà dậy sớm vậy?"
'cuti' trả lời có vẻ uể oải:
"Dạ, đáng lẽ hôm nay em đi học nhưng bị cúm mấy hôm nay, trong người còn thấy nhừ quá nên ở nhà. Em dậy hồi sớm à. Nằm hoài trong giường buồn quá nên mò lên net chơi. Vậy anh em mình 'đà khía' lai rai được hông anh?"
Tôi cười, đáp:
"Nếu trời cứ mưa thì anh em mình tha hồ mà 'đà khía' nhưng trời tạnh mưa thì anh sẽ dẫn mấy thằng nhóc đi chơi. Em muốn 'đà khía' gì đây?"
'cuti' khoái chí:
"Hi hi, em muốn trời mưa hoài. Anh em mình 'đà khía' chuyện gì mà không được anh? Chuyện trên trời, dưới đất cho vui mà. À, em có một chuyện cũng buồn cười lắm. Anh muốn nghe không?"
Tôi ngần ngừ:
"Èm... cũng tùy chuyện đó là chuyện gì nữa em. Nếu em nghĩ là anh thích nghe thì em kể đi."
'cuti' bẽn lẽn"
"Cũng chẳng có gì đặc biệt đâu anh. Chuyện em với con 'ghệ' bồ đó mà."
Tôi đáp:
"Ui trời, 'nàng tiên của lòng anh' mà sao gọi là 'con ghệ' vậy em? ;-)"
'cuti' cười, trả lời câu hỏi của tôi:
"Anh không biết đó thôi, đó là cách gọi thân mật và âu yếm đó thôi mà."
Tôi trả lời:
"Ái chà... có lẽ anh lỗi thời rồi. Anh mà gọi bà xã anh là 'con ghệ' thì chắc nguy to ;-). Ừa, em kể đi, có chuyện gì với 'con ghệ' mà em có vẻ phấn khởi vậy?"
'cuti' bắt đầu:
"Anh còn nhớ hồi bữa, lần cuối cùng bốn anh em mình 'đà khía' hông? Thật ra hôm đó em có hẹn với 'con ghệ' nhưng em quyết định cho nó leo cây. Ai biểu tắt di động làm chi, em gọi hoài không được nên... xù."
Tôi thắc mắc:
"Tắc di động là tắc thế nào em? anh không hiểu lắm."
'cuti' phát biểu:
"Kiểu này anh phải về VN làm một khóa tu từ đi anh, 'di động' là điện thoại di động đó. Hì hì."
Tôi đáp:
"À... hoá ra là thế. Anh cứ ngỡ con mèo di động hay con chuột di động gì đó ;-)"
'cuti' tiếp tục:
"Em phải dùng từ cẩn thận không thì lại bị anh kê cho. Tối hôm đó, 'con ghệ' đợi hoài không thấy em đến nên nổi 'khùng' lên. Điện thoại di động em thì hết pin mà cũng chưa kịp sạc nữa. Thế là ẻm bèn phóng xe đến nhà em. Chưa giáp mặt, đã mắng em xối xả vì em đã cho bả leo cây."
Tôi xen vào:
"Vậy là tốt rồi, 'nường' còn chịu khó phóng xe đến nhà em để mắng thì không có gì trầm trọng. Rồi sao nữa."
'cuti' cười, nói tiếp:
"Hì hì, anh không rõ đó thôi. Con bồ em tánh nóng như lửa, có gì là huỵch toẹt ra hết. Lúc đó nghe thì cũng ngứa con ráy lắm nhưng riết cũng quen. Nó buộc tội em là mê net, mê chat với 'con quỷ cái' nào đến nỗi phải cho nó leo cây. Em cố sức phân trần nhưng không hiệu quả. Rốt cuộc em phải cho nó xem nội dung mấy anh em mình 'đà khía' nó mới chịu yên."
Tôi cười:
"Hì hì, hoá ra trước đó em chưa hề kể cho 'con ghệ' nghe về mối quan hệ 'bất chính' của mấy anh em mình sao?"
'cuti' trả lời:
"Dạ, em định kể cho nó nghe nhiều lần nhưng cứ mỗi lần đi chơi mà đề cập đến tin học, đến máy tính là nó gạt phăng đi. Nó nói "bộ ôm máy cả ngày, cả tuần chưa đã nư sao mà hễ mở miệng ra là máy tính, máy tính" nên em... im luôn."
Tôi đáp:
"Thú vị lắm. Vậy sau đó thế nào em?"
'cuti' cười hớn hở:
"Dạ sau đó thì tụi em đi uống nước một chút rồi về. Lúc mấy anh em mình kết thúc thì bên đây mới có 7 giờ tối chớ mấy anh. Thế là trong lúc đi uống nước, 'con ghệ' cứ đem chuyện mấy anh em mình 'đà khía' ra hỏi dồn. Em nói với nó là em có lưu lại nội dung anh em mình chat, để em cho nó một bản để đọc cho khỏi thắc mắc."
Tôi đáp:
"Ừa, con gái là chúa tò mò mà em. Cái gì càng dấu, càng thích tò mò ;-)."
'cuti' cười hi hi, rồi nói tiếp:
"Chưa hết. Sau khi em đưa cho nó cái file chứa nội dung anh em mình chat, mấy ngày sau nó nhất định đòi em phải giới thiệu anh cho nó. Nó cũng muốn tham gia 'đà khía' với mấy anh em mình luôn. Em nói là em sẽ chuyển lời nhưng em không hứa gì hết."
Tôi cười ghẹo 'cuti':
"Hì hì, được dịp trả đũa nên làm khó 'nường' hay sao đây? Hoá ra là chuyện con bé muốn tham gia :). Thì cứ dẫn 'nường' lên 'đà khía' chung chớ có gì quan trọng đâu em?"
'cuti' trả lời:
"Em nói thiệt mà anh. Em không thể hứa gì nó vì em không biết hay sẽ nói gì. Lỡ may em đề nghị và anh phán con gái, con lứa mà bày vẽ, lắm chuyện thì có quê cả đám hông à."
Tôi đáp:
"Có gì mà không ok em. Kêu nó tham gia cho vui chớ có sao đâu à."
"cuti" trả lời:
"Dạ, để em báo cho nó biết. 'Con gái, con lứa' mệt lắm anh ơi, khi thế này, khi thế kia, chẳng biết đường nào mà mò."
Bên ngoài mưa đã ngớt. Tôi đoán mấy thằng nhóc của tôi sắp sửa vòi vĩnh chuyện đi chơi đây. Cho nên tôi cho 'cuti' biết:
"Có lẽ anh sẽ đi chơi với mấy thằng nhóc. Trời bên này đã tạnh mưa rồi em. Chiều tối nay anh ở nhà, nếu thích em rủ đám Khoa, Duy và 'con ghệ' vào đà khía cho vui."
"cuti" hớn hở:
"Dạ, vậy thì vui quá. Em bệnh nằm nhà hoài chán quá. Được đà khía vậy thì quá đã. Để em điện cho tụi nó liền. Vậy khoảng mấy giờ anh lên?"
Tôi phỏng chừng:
"Anh đoán khoảng 4, 5 giờ chiều bên em đó, có tiện không?"
'cuti' chậc lưỡi đáp:
"Chậc chậc... hơi kẹt đó anh. Bọn em thì dễ nhưng con Như chắc kẹt vì em đoán giờ đó nó phải nấu cơm chiều rồi. Thôi kệ nó vậy. Khi khác cho nó tham gia cũng được."
Tôi 'chỉnh' 'cuti':
"Hèm... nó là girl friend của em mà cứ 'con' với 'nó' nghe hông 'ngọt' tí nào hết em. Vậy ngày mai khoảng 2 giờ trưa bên em được hông?"
'cuti" trả lời:
"Dạ, 2 giờ trưa thì chắc ok rồi anh. Nó có lên trễ một tí cũng không sao. Còn chuyện 'nó' với 'con' em bị quen miệng rồi anh ơi. Gọi thế nào cho ổn đây anh?"
Tôi đáp:
"Kêu bằng tên đi em và cũng không cần phải đệm thêm chữ 'con' :). Rồi, 2 giờ trưa bên em hả? Anh đi đây."
'cuti' phàn nàn:
"Dạ chào anh. Đúng là anh già khó tính, thêm chữ 'con' cũng không được ;-)."
Tôi logoff.
----------------------------
Chiều hôm sau, như đã hẹn, tôi lại logon YIM. Khi vào, tôi thấy hai khuôn mặt 'vàng khè' của 'cuti' và 'docco' cộng thêm một 'request for accept' của một người có cái nick khá ngộ nghĩnh và bí hiểm là ccxx kèm theo thông điệp ngắn gọn: "Dạ em là Như đây, bạn của Hưng, Khoa và Duy đó anh. Anh add em được không ạ?". Hiển nhiên là 'cô bồ' của 'cuti' nhà mình. Tôi nhấn nút "accept" và một khuôn mặt 'vàng khè' trên cái nick ccxx hiện ra trên danh sách YIM của tôi. Chẳng thấy 'haothu' đâu cả, hay anh chàng đang 'invisible'?
Trong tích tắc, một "conference invitation" được ccxx gởi đến. Trong khi nhấn nút "Accept", tôi thầm nghĩ "chà, cô bé này có vẻ nhậm lẹ đây".
Trong 'conference room' có 'cuti', 'docco' và 'ccxx' nhưng chẳng thấy bóng dáng 'haothu' đâu cả. 'ccxx' lên tiếng:
"Chào 'anh già khó tính' ạ. Em xin tự giới thiệu em là Như. Rất vui được làm quen với anh."
Tôi mỉm người, tự nhủ "con bé liếng quả nhỉ" và đáp lễ:
"Chào Như, cũng bắt chước cu Hưng gọi anh là 'anh già khó tính' sao? Còn 'haothu' đâu rồi mấy đứa?"
'ccxx' trả lời lẹ làng:
"Dạ, em nghe nói nó bị kẹt. Không rõ bị kẹt gì mà không online được anh."
Lúc này 'cuti' và 'docco' mới lên tiếng:
"Chào anh già khó tính, anh đi chơi với mấy nhóc có vui không?"
"Chào anh D, mới có vài tuần mà em thấy như hàng tháng vậy. Anh khoẻ không?"
Tôi đáp:
"Ừa, đi chơi cũng vui lắm em. Anh cũng khỏe, còn em dạo này sao Duy?"
'docco' trả lời:
"Dạ em cũng bình thường anh. Dạo này em đọc nhiều hơn và ít đi chơi hơn :)"
Tôi đáp:
"Tốt quá vậy? Anh tin là em 'luyện' được mấy 'tầng nội công' rồi đó :). Ừa, nãy giờ anh thử đoán cái nick ccxx là cái gì. Anh nghĩ là đoán đúng hông chừng."
'ccxx' cười khoái chí:
"Anh đoán ra được em phục lăn liền đó. Hồi giờ chưa có ai đoán ra được cái 'bí ẩn' đằng sau cái nick này đó anh."
Tôi cười, đáp:
"Ừa, nếu vậy dám anh đoán sai lắm đó. Anh nghĩ ccxx là 'công chúa xấu xí' phải không?"
Cả ba 'cuti', 'docco' và 'ccxx' cùng trả lời gần một lượt:
"Ồ"
"wow"
"độc thiệt"
và 'ccxx' nói tiếp:
"Sao anh đoán một cái là trúng phóc liền dzị? Em thiệt là phục lăn đó. Mấy người trên mạng toàn liên tưởng cái nick của em đến những thứ bậy bạ không à."
Tôi đáp:
"Chắc là mấy 'anh chàng' trên mạng đoán được nhưng không dám nói, sợ em giận vì nó có hai chữ 'xấu xí' bên trong. Anh nhìn qua chữ ccxx tự nhiên anh liên tưởng ngay đến 'công chúa xấu xí' liền. Nhưng mà, ccxx có gì mà liên tưởng đến những thứ bậy bạ vậy em?"
'ccxx' phụng phịu:
"Anh không biết đó thôi. cc là credit card chùa đó anh, còn xx là mấy thứ... ùm.... à... tầm bậy tầm bạ đó. Thôi, em không nói nữa. À nhưng mà anh không sợ em giận sao mà nói thẳng hai chữ 'xấu xí' dzị? :)"
'docco' xen vào:
"Thì xấu thì chấp nhận xấu chớ có gì mà giận cà."
'ccxx' phản công:
"Còn ông nữa, còn chừng ông nghe ông."
Tôi cắt ngang:
"Hì hì, anh nghĩ hai chữ 'xấu xí' đó thật ra hàm chứa một chút kiêu hãnh ngầm đó thôi. Có ai tự cho mình 'xấu xí' bao giờ? Nếu có thì cũng 'ngầm' khen mình 'xinh đẹp' ;-). Bởi vậy, anh chẳng ngại nói ra hai chữ này. Riêng với những người liên tưởng cái nick của em thành những thứ bậy bạ thì chính họ thiệt thòi thôi. Đừng để ý làm gì."
'ccxx' thốt:
"Kinh khủng, kinh khủng. Em đọc những lời anh đối thoại với đám Hưng, Khoa, Duy đã thấy miệng lưỡi của anh kinh khủng. Giờ trực tiếp nói chuyện mới thấy quả là không sai :). Thôi, em nghĩ ngoài việc 'đà khía' chuyện tin học, máy tính, anh nên huấn luyện ông Duy một khoá 'ái tìn' đi anh. Ông này cũng tốt mã, học giỏi mà sao vẫn chưa có một 'miểng tìn rách rưới' nào hết. Em bảo đảm anh huấn luyện cho ổng một khoá là thành công ngay."
'docco' luống cuống:
"Thôi.. thôi.. đi bà. Cho tui xin mà. Nhưng không cái gì mà 'tìn tìn' trong này. Thôi anh, mình nói chuyện tin học vui hơn."
'ccxx' cười ré lên:
"hi hi hi, tui đoán mặt ông Duy lúc này đang đỏ như 'mặt trời bé con' đó. Thôi, tha cho ông một lần đó. Vậy mấy anh em mình nói chuyện gì đây?"
'cuti' lúc này mới lên tiếng:
"Anh thấy... anh thấy Như hoạt bát hông anh? Hay để Như chọn đề tài được đó."
Tôi cười, đáp:
"Hì hì, anh thấy 'nhà' em hoạt bát lắm, muốn 'lăng xê' nàng liền hả? Hy vọng sẽ có nhiều chuyện lý thú đây :)."
'ccxx' phát biểu một câu thật ngắn rồi bỏ dở:
"Em công nhận anh nói chuyện 'kinh' thiệt.... [/i]
'docco' cười thích thú:
"Hi hi, cám ơn anh D gỡ dùm em một quả. Em dám chắc lúc này mặt bà Như đỏ hơn 'mặt trời bé cha' nữa ;-)"
Chỉ qua vài câu đối thoại, bọn tôi đã trở nên thoải mái như đã quen thân nhau từ lâu. 'docco' hình như muốn cắt ngắn những chuyện cà rỡn để bắt đầu 'đà khía' những chuyện cu cậu thắc mắc. 'docco' lên tiếng:
"Thôi, 'đả qua đả lại' một hồi coi chừng thế chiến thứ III bắt đầu bây giờ. Mình nói chuyện khác đi hả bà con?"
'docco' nói tiếp:
"Em có tham khảo qua các vấn đề thuộc về reconnaissance rồi đó anh nhưng em thấy có nhiều điểm lờ mờ quá. Em thấy có cái thì gọi là 'enumeration', cái thì gọi là 'interrogation', cái lại gọi là "reconnaissance". Em thử so sánh thì thấy rằng chúng cùng phục vụ cho mục đích thăm dò. Vậy cái nào là cái nào đây anh?"
Tôi cười, đáp:
"Hì hì, nhảy ngay vào kỹ thuật hả? Chắc em sợ mình lại 'lạc đề' sang những chuyện khác chớ gì? Đúng là những thuật ngữ em liệt kê ra ở đây đều tựu trung vào tinh thần chung: thăm dò. Reconnaissance dịch sát nghĩa là 'khai thác thông tin' và 'interrogate' và 'enumerate' dính líu trong tiến trình khai thác này. Trong đó, 'interrogate' dịch sát nghĩa là 'hạch hỏi' và 'enumerate' là 'đếm'. Nắm được những thuật ngữ này cũng có ích để hiểu sâu từng phân đoạn của quá trình thăm dò. Tuy nhiên, nếu em cảm thấy bối rối với những thuật ngữ này thì khoan hẵng tìm cách 'dịch' chúng sang tiếng Việt vì có những từ dịch không được hoặc không đủ lột tả tinh thần. Cứ tiếp nhận chúng như những thuật ngữ vậy thôi. Sau này em sẽ rõ hơn."
'ccxx' xen vào:
"Thôi để anh già và Duy đối thoại hén? Em với Hưng ngồi nghe. Có gì thắc mắc bọn em tham gia sau."
'docco' trả lời gọn lỏn:
"Ừa, vậy càng tốt. Đỡ bị loãng."
Rồi hỏi tiếp:
"Vậy tóm lại quá trình thăm dò bao gồm những bước chính nào vậy anh? Và tại sao phải thực hiện những bước này?"
Tôi đáp:
"Đáng lẽ ra anh phải hỏi em câu hỏi này để giúp em tổng hợp những gì em đã đọc. Tuy nhiên, em có vẻ khá bối rối với những thuật ngữ kia. Anh e rằng em đang rối... tùng phè lên trong đó nên để anh tóm tắt luôn vậy.
Thật ra không có một luật nào bắt buộc phải thao tác đúng từng bước để phục vụ mục đích thăm dò cả. Tùy mục tiêu và tùy khả năng phòng bị và thắt chặt của mục tiêu mà khai triển kế hoạch thăm dò cho thích hợp. Anh nghĩ mình có thể tóm gọn chúng lại thành ba phần chính:
- tìm dấu ấn (footprinting) --> xác định mục tiêu tổng quát
- rà quét (scanning) --> xác định các dịch vụ tổng quát
- lấy số liệu cụ thể (enumerating) --> thu thập thông tin cụ thể.
Em thử suy luận xem, tại sao phải tìm dấu ấn? tại sao phải rà quét và tại sao phải thu thập thông tin cụ thể?"
'docco' rụt rè:
"Dạ... em nói đại nghe? Tìm dấu ấn để xác định hệ điều hành nào mình đang đối diện nhằm thu hẹp biên độ dò tìm và khai triển bước kế tiếp được chính xác hơn. Còn rà quét thì em nghĩ... đã tiến tới một bước rất cụ thể là tìm xem có những dịch vụ nào đang được cung cấp trên mục tiêu mình muốn thăm dò để thiết lập kế hoạch thâm nhập. Còn lấy số liệu cụ thể... ùmm... à... em không biết nữa."
Tôi cười, cổ vũ 'docco':
"Em trả lời hai phần đầu vậy là súc tích và chính xác lắm rồi. Tất nhiên phần thứ ba là phần lấy kết quả, là phần kết thúc quá trình thăm dò chớ còn gì nữa em? Bước này càng cụ thể hơn bước thứ nhì là mình dùng nó để thiết lập bước thâm nhập. Vậy mình có thể thêm vào bảng liệt kê ở trên như sau:
- tìm dấu ấn (footprinting) --> xác định mục tiêu tổng quát --> thu hẹp biên độ thăm dò
- rà quét (scanning) --> xác định các dịch vụ tổng quát --> thiết lập kế hoạch thâm nhập
- lấy số liệu cụ thể (enumerating) --> thu thập thông tin cụ thể --> thiết lập bước thâm nhập
Em thấy có gì đặc biệt với bảng liệt kê này không?"
'ccxx' xen vào:
"Càng lúc càng cụ thể phải không anh?"
Tôi đáp:
"Đúng rồi đó em. Càng lúc càng cụ thể và càng cụ thể càng tốt. Thật ra 3 'bước' ở trên có thể kết hợp lại thành 1 'bước', cũng có thể tách rời ra làm 2 'bước' hoặc mở rộng ra thành... mấy chục bước. Với mục đích dò tìm thông tin thì miễn sao tìm được thông tin cụ thể và chính xác là được, không nhất thiết phải theo... 'bước'."
'cuti' thắc mắc:
"Nhưng tại sao tìm footprint lại quan trọng thế anh? Em thấy một web server apache chạy trên Windows 2000 và một web server apache chạy trên Linux đâu có khác gì đâu anh?"
Tôi đáp:
"Nếu nhìn một cách tổng quát trên phương diện người dùng thì nhận định của em không sai nhưng nếu xét cẩn thận về mặt kỹ thuật thì nhận định của em chưa.... hoàn toàn đúng. Trên phương diện người dùng, cả hai apache (em đưa ra) đều nhận request, xử lý request, đều có thể gắn với asp, jsp, php, cgi... để tạo trang động nhưng xét cho cặn kẽ thì cơ chế quản lý bộ nhớ lẫn cơ chế điều tác process trên hai hệ điều hành khác nhau rất xa. Những khác biệt này dẫn tới chiến lược phòng thủ hay tấn công rất khác nhau. Việc nhận diện dấu ấn của mục tiêu không chỉ giúp giới hạn biên độ thăm dò và khai thác mà nó còn trực tiếp ảnh hưởng đến việc:
- quyết định 'tấn công' hay 'rút lui' (nói theo phương diện tấn công) hoặc,
- quyết định 'thắt chặt thêm' hay 'xây dựng lại từ đầu' (nói theo phương diện phòng thủ)."
'cuti' vẫn thắc mắc:
"Em vẫn thấy vấn đề này hơi mù mờ đó anh. Nếu cần tấn công một webserver apache có chạy php chẳng hạn thì cũng bấy nhiêu kỹ thuật như sql inject, xss... vậy thì chạy trên Windows hay trên *nix đâu có khác gì?"
Tôi trả lời:
"Em nói đúng nhưng cái đúng này bị áp đặt trong một giới hạn khá hẹp. Tấn công và thâm nhập một dịch vụ (web chẳng hạn) không chỉ dừng lại ở sql inject và xss. Đây là những kỹ thuật phổ biến và dễ thực hiện, hơn nữa những lỗi này lại thường thấy nên thường được chú trọng. Nếu 'tấn công' chỉ dừng lại ở chỗ 'chôm' được admin password của một forum hay đưa lên một thông điệp trên một trang web để 'deface' thì mấy kỹ thuật em đề cập đã đủ dùng. Nếu thế thì phạm vi reconnaissance ở đây rất nhỏ hoặc không cần thiết nữa. Những điều anh đưa ra ở đây có thể dùng để ứng dụng nhiều khả năng và kỹ thuật thâm nhập hơn nữa, cho nên reconnaissance trở nên cần thiết. Ví dụ, em muốn chạy shellcode đến dịch vụ web của server để lấy một cái 'shell' cho mục đích thâm nhập sâu hơn nhưng không xác định chính xác hệ điều hành của mục tiêu thâm nhập là gì thì không có cách gì tạo shellcode được. Lý do, shellcode của mỗi hệ điều hành mỗi khác.
Nếu mục tiêu thâm nhập càng sâu thì quá trình reconnaisance đòi hỏi càng phải cẩn thận và chi tiết. Ngay cả những 'màn' tấn công thuộc loại 'dơ' như DoS chẳng hạn, để thực sự 'giết' mục tiêu mình muốn DoS, em phải hiểu rất rõ điểm yếu của hệ điều hành và dịch vụ đang chạy. DoS 'chết' một Windows server chạy Apache + php (dùng prefork) và không có database connection pool nhanh hơn DoS chết một Linux server chạy Apache + jsp (dùng worker) và có connection pool hẳn hòi. Những chi tiết này ở đâu ra? Đó chính là kết quả quả 'reconnaissance' đó em.
Năm ngoái, một server do anh quản lý (chạy Linux) bị mấy 'ông thần' nào đó dùng 'ping of death' để tấn công. Điều buồn cười là dạng 'ping of death' này dành cho Windows phiên bản cũ, bị lỗi ở phần giới hạn packet size của ICMP làm treo máy khi bị tấn công. Anh không hiểu sao nhóm này cứ hè nhau mà tấn công Linux server của anh bằng một thứ công cụ dành để tấn công Windows. Hơn nữa, Linux server của anh hoàn toàn cản mọi inbound ICMP và UDP. Các gói tin ICMP và UDP chỉ có thể đi vào khi chúng mang vai trò trả lời cho các request đi từ bên trong Linux server mà thôi. Điều này có nghĩa những gói ICMP họ 'tia' vào server của anh bị huỷ ngay khi đụng firewall. Vậy mà nhóm này vẫn nhắm mắt, nhắm mũi 'tia' đến mấy tiếng liên tục rồi mới chịu ngưng. Tất nhiên dạng tấn công như thế chẳng làm suy suyển server của anh mảy may nào hết. Điều đáng nói là nguồn tấn công hoàn toàn đi từ VN ra và điều đáng buồn là những 'ông thần' này không thèm tìm hiểu xem 'ping of death' là gì, thật sự đã tạo ra tác hại gì đến server của anh không. Có lẽ mấy 'ông thần' này tìm đâu ra mấy cái script viết sẵn trên Internet rồi hè nhau mà 'ria' vào server của anh chăng?"
'docco' lè lưỡi (một biểu tượng được dùng trên YIM) rồi lên tiếng:
"Ái chà, bây giờ em mới hiểu lý do tại sao reconnaissance lại quan trọng như thế. Lúc đọc tài liệu, em cứ ngỡ đây là những bước cần phải làm cho đúng nguyên tắc và chẳng thấy có phân tích mấu chốt của reconnaissance là gì hết. Em cũng có đọc sơ sơ qua về shellcoding và thấy hoàn toàn mù tịt. Còn chuyện mấy 'ông thần' tìm đồ chơi trên mạng rồi đi 'ria' là chuyện thường ngày mà anh? :)"
Tôi đáp:
"Anh nghĩ sách vở thường giới thiệu những điểm chung nhất và dễ tiếp nhận nhất. Sau khi thử nghiệm, tự nhiên em sẽ 'ngộ' ra lý do của từng phân đoạn trong cả một quá trình thực hiện. Những người càng kinh nghiệm về bảo mật thì bước thăm dò của họ càng chiếm nhiều thời gian. Đối với một kẻ có chủ trương 'tấn công', hắn phải dò xét hết sức cẩn thận trước khi bắt tay vào thực hiện ý định của mình để đạt được mục đích, ít tốn thời gian, ít có cơ hội bị... tóm. Cũng lắm lúc, kẻ này bỏ cuộc vì sau khi dò xét cẩn thận, hắn cảm thấy không đáng để mất thời gian. Đối với người phòng thủ, quá trình 'dò xét' lại càng khó hơn bởi vì người phòng thủ phải đặt mình vào vị trí khách quan, phải test hệ thống của mình y như một 'black box' thật sự rồi từ đó mới đi đến việc kiện toàn bảo mật."
'cuti' nhận xét:
"Nhưng làm sao mình có thể dò xét ra một server nào đó đang chạy Windows, dùng php và dùng prefork chớ không phải nó đang chạy Linux, dùng jsp và dùng worker vậy anh? Bộ 'reconnaissance' có thể cung cấp thông tin ở mức độ này luôn sao?"
Tôi cười, đáp:
"Cái này tùy vào khả năng thăm dò của em. Có nhiều yếu tố để giúp em đi đến chỗ kết luận là mục tiêu thăm dò của em có cái gì. Bởi vậy, như anh đã nói, giai đoạn reconnaissance có thể là giai đoạn mất thời gian nhất. Riêng chi tiết Windows chạy apache với php hay Linux chạy apache với jsp thì phần lớn em cần có một số kiến thức và dùng khả năng suy luận để đưa về một kết luận nào đó có lý nhất."
'cuti' càng thêm tò mò:
"Vậy có nghĩa là sao anh? anh nói sâu hơn một tí được không anh?"
Tôi đáp:
"Hèm... ok, để anh thử tóm gọn xem sao. Nếu em rành php, em hẳn biết là php trước phiên bản 5.x hoàn toàn không thread-safe. Ngay cả những người đang dùng php 5.x không không mấy ai 'dám' dùng ở chế độ 'thread-safe' cả. Nếu em dò một website và biết rằng nó chạy bằng php trên apache, em có thể đoán 99% là nó chạy ở chế độ prefork. Nếu em chịu khó dò thêm footprint của hệ điều hành và xác định được nó chạy trên Windows server thì em có thể xác định nó chạy php trên apache với chế độ prefork. Tương tự, nếu em dò một website và biết nó chạy bằng jsp, em có thể đoán 99% là nó chạy ở chế độ worker. Nếu xác định được thêm hệ điều hành là Linux thì em càng có thể khẳng định nó chạy jsp trên apache với chế độ worker. Tất nhiên, thu thập càng nhiều thông tin, càng giúp em khẳng định phỏng đoán của em chính xác và để thu thập nhiều thông tin thì 'reconnaissance' càng mất thời gian là vậy. Nên nhớ là luôn luôn có những sai số trong 'reconnaissance' vì người phòng thủ cố tình dấu footprint hoặc đánh lừa các công cụ em dùng để lấy footprint. Những sai số này càng nhiều thì kết quả càng ít đáng tin cậy."
'cuti' gật gù:
"Hoá ra đây là cả một nghệ thuật chớ chẳng đùa. Những kiến thức và kinh nghiệm cho việc xác định 'nó' chạy php hay jsp cũng đủ đã điên cái đầu rồi. Dân không đụng những chuyện này thì biết đường nào mà mò anh? Như vậy rõ ràng kiến thức có sẵn tuyệt đối quan trọng. Nếu không có thì ngay cả việc thăm dò cũng không thể được. Biết gì mà thăm dò?"
Lần này 'ccxx' góp chuyện:
"Thì bởi, em đọc những mẩu đối thoại của anh già khó tính và mấy ông tướng này, em thấy anh nhấn mạnh rất nhiều lần cái gọi là 'ngọn ngành'. Những mẩu thông tin nho nhỏ đều đi từ 'ngọn ngành' ra phải không anh?"
Tôi cười, đáp:
"Đúng đó 'công chúa xinh đẹp' :). Anh có lặp đi lặp lại nhiều lần: 'muốn bảo vệ hay tấn công, mình phải nắm rõ mục tiêu' là vậy đó. 'reconnaissance' chính là bước để giúp 'nắm rõ mục tiêu' ở khuôn khổ 'blackbox' vậy."
'docco' xen vào hỏi thêm:
"Khái niệm 'blackbox' là sao anh? Với lại 'prefork' khác gì với 'worker' vậy anh?"
Tôi đáp:
"Em chưa từng nghe qua 'blackbox' và 'whitebox' sao? Sẵn đây mình nên làm quen với khái niệm này luôn. 'blackbox' chỉ cho hoàn cảnh thử nghiệm một server mình hoàn toàn không biết gì về nó; mình chỉ ở bên ngoài, chọc ngoáy nó để tìm thông tin mà thôi. Trong khi đó, 'whitebox' là một server mình nắm rõ nó có những gì, nó hoạt động ra sao và cung cấp những gì. Những công ty tư vấn về bảo mật thường thử nghiệm độ bảo mật của hệ thống theo dạng 'blackbox' là chính. Họ không biết gì về hệ thống của khách hàng cả nhưng họ vận dụng mọi phương tiện để thẩm định độ bảo mật của hệ thống này. Sau khi hoàn thành giai đoạn 'blackbox' rồi họ mới đi đến giai đoạn 'whitebox' và mới giới thiệu phương án phòng thủ. 'whitebox' test thường dùng để thử nghiệm tính năng và hoạt động của hệ thống dựa trên một số thước đo nào đó.
Riêng 'prefork' và 'worker' thì thế này. Đúng ra mình phải dùng thuật ngữ 'process' và 'thread' thì thích hợp với tinh thần mình bàn ở đây hơn. Lý do anh dùng 'prefork' và 'worker' là vì mình đang nói về webserver apache và những thuật ngữ này là những thuật ngữ của apache. 'prefork' là cơ chế xử lý request của apache bằng cách tạo process. Process thì thường nặng nề, tốn tài nguyên và kém hiệu xuất nhưng được một điểm là rất bền, ít bị sự cố. Trong khi đó, 'worker' là cơ chế xử lý request của apache bằng cách tạo thread. Thread thì nhẹ nhàng, ít hao tốn tài nguyên hơn, hiệu xuất hơn nhưng lại có nhược điểm là kém bền bỉ, dễ bị sự cố. Nói trên bình diện bảo mật và đặc biệt là tính hiệu xuất cũng nhưng tính bền bỉ của một dịch vụ, mỗi chọn lựa đều có điểm ưu và khuyết. Tuỳ nhu cầu và hoàn cảnh mà chọn cho thích hợp."
'cuti' diễu:
"He he, đừng bắt bọn em phải học kỹ về thread và process đó nha anh. Chết tụi em đó :)"
Tôi đáp:
"Lại 'bắt' ;-). Anh chẳng bao giờ 'bắt' em phải làm gì cả. Đến một lúc nào đó, tự nhiên em cảm thấy cần phải hiểu về 'thread' và 'process' thì tự nhiên em tìm hiểu thôi. Lúc ấy anh có 'bắt' em không tìm hiểu cũng chả được. Nói đùa vậy thôi, nếu siêng, em nên tìm hiểu dần dần về 'thread' và 'process'. Theo anh, đây là một trong những 'đơn vị' nền tảng của những điều em đang làm quen đó."
'docco' cảm thán:
"Không ngờ từ chuyện này lại dẫn đến bao nhiêu là chuyện khác. Đúng là 'bể học mênh mông, dục tốc bất đạt' thật không sai tí nào."
Tôi cười, động viên 'docco':
"Thong thả thôi em, việc gì phải 'dục tốc' để rồi 'bất đạt'? Đừng tham quá mà đi đến chỗ 'bội thực' mà thôi."
'docco' hỏi tiếp:
"Vậy khái niệm 'active' và 'passive' recconnaissance mà anh đề cập lần trước liên quan thế nào đến 3 bước ở trên vậy anh?"
Tôi ngẫm nghĩ "chà, các 'bước' là các bước còn 'active' hay 'passive' là dạng. Làm thế nào để cu cậu đừng lẫn lộn đây nhỉ?", thế rồi tôi trả lời:
"Thế này, 'active' hay 'passive' là các dạng thăm dò, còn 3 bước ở trên là cụ thể các bước khai triển. Em có thể dùng dạng 'active' hoặc 'passive' hoặc cả hai dạng này để thực hiện 3 bước ở trên. Đây là mối liên quan mà em thắc mắc đó."
'cuti' nhanh nhảu:
"Vậy... ví dụ bước một, khi nào mình dùng 'active', khi nào mình dùng 'passive' anh?"
Tôi hỏi ngược lại:
"Vậy em còn nhớ mục đích của việc dùng 'active' và 'passive' để thăm dò không?"
'cuti' đáp:
"Dạ nhớ chớ anh. 'ative' chính xác hơn nhưng ít kín đáo hơn. 'passive' kín đáo hơn nhưng ít chính xác hơn. Nhưng ý em là trong lúc tìm footprint, khi nào thì thao tác 'passive', khi nào thì dùng 'active' đó mà."
Tôi chỉnh 'cuti' ngay vì không chịu suy nghĩ mà chỉ hỏi 'trơn':
"Em vừa trả lời ngay câu hỏi của em đó thôi. Nếu đã nắm được 'ative' chính xác hơn nhưng ít kín đáo hơn. 'passive' kín đáo hơn nhưng ít chính xác hơn thì tại sao không dùng nó mà ứng dụng? Anh nghĩ em nên động não hơn một tí đó Hưng."
'ccxx' xen vào:
"Anh nói đúng đó, ông Hưng này có cái tật dễ thì đâm lười đó anh. Anh quay ổng như 'dế' thì ổng sẽ động não thôi, đừng trả lời mọi câu hỏi của ổng là cách hay nhất. Em biết lắm mà :)."
Tôi cười, đáp:
"Ừa, em mà không biết cu Hưng 'lắm' thì còn ai biết nữa em? Thôi... em 'quay nó như dế' dùm anh nha?"
'ccxx' cười thích chí:
"Hi hi hi, anh hông biết đó thôi, em quay ổng như cơm bữa mà không thì 'dễ hoá lười' liền thôi."
'docco' có vẻ bồn chồn với những đối thoại thuộc dạng chit chat, cu cậu xen vào:
"E hèm... hơi bị... lạc đề á. Anh già ơi, cho em hỏi thêm cái này nha? Có bao nhiêu cách để xác định footprint vậy anh? Em đọc sách thấy có khá nhiều công cụ, vậy theo anh mình nên dùng cái nào?"
Tôi đáp:
"Anh không thể nói rõ có bao nhiêu cách vì anh không biết thật sự có bao nhiêu cách. Cái này tùy vào tính linh động và khả năng sáng tạo thôi em. Anh cũng không thể trả lời em là nên dùng công cụ nào. Chỉ có chính em tự tay dùng rồi chọn lấy một hoặc nhiều công cụ em thích mà thôi. Có những công cụ 'gom' luôn các công đoạn xác định hệ điều hành, xác định các dịch vụ đang chạy (open ports) thậm chí lấy luôn cả phiên bản của software cung cấp dịch vụ. Tuy nhiên, công cụ nào cũng có ưu khuyết điểm cả. Ví dụ nmap là một port scanner rất độc đáo, nó có thể thực hiện ba điều ở trên cùng một lúc nhưng nếu dùng không đúng mức thì nó sẽ rất 'ồn ào' vì nó không những 'active' mà 'extremely active'. Những hệ thống có trang bị IDS, IPS sẽ phát hiện ngay là có nmap đang dò dẫm và đây là điều bất lợi cho việc thăm dò."
'docco' phát biểu:
"À, vậy nmap là công cụ thuộc dạng 'active' rồi. Em phải ghi nhớ chuyện này."
Tôi cười, nói:
"Không hẳn là như vậy đâu em. Anh nói là nếu dùng không đúng mức thì nó sẽ rất 'ồn ào' cơ mà. Nếu em dùng nó đúng mức, nó không còn 'extremely active' nữa. Nó không phải 'passive' nhưng cũng không hẳn là 'active' bởi vì em không tạo ra nhiều 'tiếng ồn' trong khi rà (nếu dùng đúng mức)."
'cuti' cảm thán:
"Chẹp... chỉ có chuyện 'rà' không mà cũng lắm nguyên tắc và công phu đến thế. Chắc lại phải học thêm nmap roài."
Tôi đáp:
"Em có vẻ bồn chồn với chuyện làm quen với những công cụ mới hay sao vậy Hưng? người ta viết hàng ngàn dòng code, xây dựng hàng trăm signature, viết manual sẵn. Em chỉ có việc đọc và dùng mà còn rên rỉ sao em? Kiểu này bắt đầu nguy rồi đó."
'cuti' đính chính lia lịa:
"Hông, hông có đâu anh. Em thức sáng đêm để quậy còn được mà. Ý em sau mỗi lần nói chuyện với anh là có thêm hàng loạt thông tin mới, cả đống công cụ mới để thử, để làm quen. Em cảm thấy có một phần sức ép nào đó để đuổi bắt với thông tin anh đưa ra thôi anh."
Tôi cười:
"Hì hì, vậy em còn muốn 'hack' không? Anh cũng cảm thấy điều đó nên mấy anh em mình 'đà khía' ít thường xuyên hơn là thế. Em không nên nghĩ và tự tạo sức ép cho mình là phải thông thạo, phải nắm vững các thông tin mới mẻ ngay lập tức. Từ từ, thong thả thôi em."
'docco' hỏi tiếp:
"Hồi nãy anh nói đến vấn đề 'ồn', ồn ở đây là những dấu hiệu mà hệ thống phát hiện phải không anh?"
Tôi đáp:
"Đúng rồi đó em. 'Ồn' ở đây chính là những thông tin được ghi nhận trong các log files của hệ thống hay các hệ thống phát hiện gần như 'real time' như IDS/IPS đó. Mỗi dạng thăm dò thường có tính chất đặc thù và những đặc thù đó được ghi nhận trên các hệ thống phòng thủ, còn gọi là 'signature'. Nếu admin của hệ thống ấy bất thình lình thấy có hàng loạt cú 'rà' trên hệ thống của mình thì coi như mục đích thăm dò và thâm nhập của ai đó bị hỏng. Nếu admin không nhận thấy những dấu hiệu này mà IDS/IPS nhận thấy thì tình hình cũng chẳng khác gì mấy. Không riêng gì nmap mà tất cả các software em dùng, cái nào cũng 'ồn' cả thôi. Chỉ có cái khác là em 'thấy' hay 'không thấy' được cái 'ồn' đó thôi :). Để rà một máy con của một người đang duyệt web thì chẳng phải lo mấy đến cái 'ồn' cả vì họ hiếm khi 'thấy' được sự 'ồn' đó. Tuy nhiên, để rà và thăm dò một máy chủ, một mục tiêu đáng để thâm nhập hay đáng để bảo vệ thì mỗi chi tiết 'ồn' đều là dấu hiệu quan trọng."
'ccxx' thắc mắc:
"Để khỏi bị 'ồn', mình không cần thăm dò kỹ mà chỉ tấn công thẳng vào dịch vụ web thì sao anh?"
Tôi cười, đáp:
"Thì mình nắm phần thất bại nhiều hơn là thành công 'công chúa xinh đẹp' ạ."
'ccxx' phụng phịu:
"Ứ ừ, em hỏi thật mà anh cứ đùa hoài."
Tôi cười phá lên và tiếp tục:
"Á à, anh trả lời thật mà em cứ ngỡ anh đùa hoài. Mình tấn công thẳng vào dịch vụ web là tấn công thế nào em? Mình không nắm được nó mạnh, yếu chỗ nào thì mình chỉ 'đấm đá' kiểu 'bịt mắt' thôi thì có trúng trật vào đâu nào? Cái này cũng giống như trường hợp 'ping of death' anh nói hồi nãy thôi em. Nó cũng giống như muốn đục cánh cửa sắt của két tiền mà cứ dùng dùi đục bằng gỗ mà phang vào cửa sắt thì chừng nào thủng được cái tủ? :)"
'ccxx' giả lã:
"Hi hi, anh già vui tính ghê. Chắc em hỏi hơi ngớ ngẩn thật đa. Lần sau em sẽ uốn lưỡi 7 lần trước khi hỏi cho chắc ăn."
Tôi đáp:
"Không em, em cứ nói chuyện thoải mái. Có bất cứ ý nghĩ nào nảy ra trong đầu cứ phát biểu. Chuyện đúng, sai, ngớ ngẩn không quan trọng mà quan trọng ở chỗ em rút tỉa được những gì trước và sau khi đưa ra câu hỏi. Nếu em e dè quá thì cuộc đối thoại của mấy anh em mình sẽ 'khô' như rơm thôi."
'ccxx' trả lời:
"Dạ. Em cứ thế mà phang, anh chuẩn bị tinh thần đó nha."
'docco' xen vào:
"Không biết em nhận xét những cái này có đúng hông, anh xem thử nha. Ví dụ muốn khám phá các chi tiết thuộc về domain name của một host nào đó, mình có thể dùng một công cụ online để xem mà không cần tiếp xúc trực tiếp từ máy của mình đến DNS server của mục tiêu. Cái này gọi là thăm dò ở dạng 'passive' phải không anh?"
Tôi đáp:
"Đúng lắm. Nó hoàn toàn 'passive' bởi vì em chỉ 'query' thông tin một domain, một host nào đó trên một DNS database công cộng. Có thể DNS em đang query sẽ liên hệ với authoritative DNS server của mục tiêu em đang thăm dò để lấy thông tin, cũng có thể là không vì nó dùng thông tin có sẵn trong cache không chừng. Dù gì đi chăng nữa, đây vẫn là dạng 'passive' bởi vì admin cũng như hệ thống IDS của mục tiêu em muốn thăm dò đều không có cách gì biết được em đang thăm dò. Những thông tin này thường ở dạng tổng quát và dành cho công cộng. Nó cũng có ích để xác định một số điều. Tuy nhiên, để thăm dò DNS và hình thành cấu trúc mạng của mục tiêu, đôi khi em phải chuyển sang dạng thăm dò 'active'."
'docco' hỏi tiếp:
"Anh ví dụ một kiểu thăm dò DNS ở dạng 'active' được không anh?"
Tôi trả lời:
"Được chớ em. Thông thường, em dùng nslookup trên windows chẳng hạn, thì thế này:
C:>\> nslookup <server.domain.com>
Cách này query dùng default DNS server chính là DNS server nào em khai báo trên máy dùng để phân giải tên miền. DNS server này có thể là DNS riêng do em tạo ra hoặc DNS server do ISP cung cấp. Ở dạng đó, những điều được query cũng chỉ là những thông tin dành cho công cộng mà thôi (cái này còn tùy thuộc vào sự chặt chẽ của người thiết kế DNS, có những DNS chứa cả thông tin dàng cho công cộng lẫn thông tin dành riêng cho nội mạng và đây là điều nên tránh). Tuy nhiên, nếu em 'chịu khó' hơn một tí, thử như sau:
C:\> nslookup
> set type=ns
> domain.com
Server: [172.16.114.163]
Address: 172.16.114.163
domain.com nameserver = ns1.domain.com
domain.com nameserver = ns2.domain.com
ns1.domain.com internet address = 172.16.114.163
ns2.domain.com internet address = 172.17.124.174
> server ns1.domain.com
> ls -d domain.com
[[172.16.114.163]]
domain.com. SOA ns1.domain.com hostmaster.domain.com. (1098357511 16384 2048 1048576 2560)
domain.com. NS ns1.domain.com
domain.com. NS ns2.domain.com
domain.com. MX 0 mail.domain.com
www A 172.16.114.160
white A 172.16.114.161
mail A 172.16.114.162
ns1 A 172.16.114.163
ns2 A 172.17.124.174
domain.com. A 172.16.114.160
blue A 172.16.114.163
red A 172.17.124.174
domain.com. TXT "v=spf1 a mx ptr -all"
mail TXT "v=spf1 a -all"
domain.com. SOA ns1.domain.com hostmaster.domain.com. (1098357511 16384 2048 1048576 2560)
Có gì đặc biệt ở đây vậy em?"
'docco' ngần ngừ:
"Ùm... à.... hình như anh cố tình dùng chính DNS của chính mục tiêu để query phải không anh?"
Tôi đáp:
"Bravo! Đúng như thế, nó nằm ở đây:
> server ns1.domain.com
> ls -d domain.com .
Em biết lý do tại sao không? Ngày nay, hầu hết các authoritative DNS đều không cho 'zone transfer' một cách rộng rãi nữa vì quá nguy hại. Tuy nhiên, vẫn có các DNS server cho phép những DNS server được 'tin cậy' thực hiện 'zone transfer'. Bởi thế, mình mới 'láu cá' bằng cách mượn tay DNS server được 'tin cậy' để query thông tin cho mình :). Nên nhớ là có những DNS server (primary và secondary) hiện nay không còn cho phép thực hiện bước ở trên nữa vì họ không cho 'zone transfer' ngay cả giữa primary và secondary."
'cuti' thắc mắc:
"Query DNS có gì mà quan trọng đến thế hở anh? Nãy giờ em ráng theo dõi nhưng bắt đầu bị ù ù cạc cạc rồi đó. Có nhiều thông tin hoàn toàn mới mẻ đối với em cho nên tóm gọn lại, em không rõ tại sao phải thu thập những thông tin này và để có thể thu thập thông tin thì phải nắm bao nhiêu là kiến thức :("
'ccxx' xen vào:
"Trong khi anh nói, em cũng thử và thấy quả thật mình có thể thâu thập khá nhiều thông tin qua DNS. Có khi query được, có khi không. Hình như mình có thể xác định một cách tổng quát có bao nhiêu servers trong mô hình mạng mình muốn thăm dò. Em chưa rõ bước kế tiếp thế nào nhưng em hình dung mình sẽ làm gì đó với những thông tin thu thập được. Có thể dùng để phác thảo một mô hình mạng chăng?"
Tôi cười, đáp:
"Công chúa nhận xét đúng lắm. Tất nhiên là mọi thông tin đều cần thiết cả, nếu không mình mất thời gian với chúng làm gì? Để hình thành mô hình mạng của mục tiêu mình muốn thăm dò, việc thăm dò DNS chỉ cung cấp một phần thông tin mà thôi. Em cần phải kết hợp với một số thông tin khác nữa. Cái này mình sẽ bàn sau. Anh lấy ví dụ đơn giản thế này nha. Giả sử em muốn tấn công một host X nhưng host này 'thủ' chặt quá. Thông thường thì em bó tay và bỏ cuộc. Tuy nhiên, nếu em thăm dò rộng ra (bằng cách hình thành mô hình mạng) thì thấy rằng host X nằm trong một nhóm host khác và một vài host ấy có thể thâm nhập được. Nếu thâm nhập được một trong các host này thì cơ hội 'nhảy' sang host X thành công cao hơn.
Cho dù em không thể thâm nhập bất cứ host nào đi chăng nữa nhưng qua thông tin dò xét và thu thập được trong quá trình recconnaissance, em có thể đi đến kết luận là nên tiếp tục hay nên bỏ cuộc (để đỡ tốn thời gian). Nếu thấy mô hình mạng chặt chẽ quá, thấy có firewall vững vàng, cách tốt nhất là bỏ cuộc để đỡ mất thời gian. Thật ra, nếu đã thông thạo thì việc dò tìm thông tin xuyên qua DNS không mất quá nhiều thời gian đâu. Đây chỉ là một bước rất nhỏ trong quá trình thăm dò. Vấn đề mình bàn ở đây là để nhấn mạnh một điều quan trọng: tìm thông tin có rất nhiều cách, cách nào nhanh nhất, có thông tin cụ thể nhất thì đó là cách thích hợp nhất."
'docco' cảm thán:
"Không ngờ bên trong recconnaissance đã có những điều lý thú đến như thế. Em định hỏi thêm anh một số chi tiết về kết quả lấy được ở trên nhưng chợt nhớ ask me why, don't ask me what nên em đã ghi chú một loạt thông tin mà em cần phải tìm hiểu chi tiết sau. Cũng như Hưng, em bắt đầu thấy lùng bùng rồi đó anh. Như anh nói, vậy là recconnaissance cũng sẽ dính với chuyện dò dẫm cả firewall luôn sao anh? và đối với người phòng thủ thì nên làm thế nào? Về việc anh đề cập tới host X ở trên, hình như anh muốn nói đến khía cạnh kiện toàn bảo mật?"
Tôi trả lời:
"Chuyện dò dẫm firewall là chuyện không thể thiếu nếu như firewall nằm trên đường thâm nhập rồi đó em. Thong thả rồi mình sẽ bàn các chi tiết này sau, không thì em càng lùng bùng nữa. Chuyện phòng thủ thì mình cũng sẽ bàn sau khi em đã 'thông' những chi tiết mình vừa 'đà khía'. Nên nhớ rằng, 'thủ' ở đây là thực sự phòng thủ chớ không phải là những kỹ thuật nho nhỏ dùng để dấu footprint không thôi nha. Mình sẽ đào sâu từ từ những chuyện này (nếu bọn em còn hứng thú ;-) )."
'cuti' lên tiếng ngay lập tức:
"Làm sao mà không còn hứng thú được anh? Những thông tin này là tổng hợp của bao nhiêu điều lý thú. Chắc em sẽ không bao giờ thâm nhập ai nhưng những kiến thức này chắc sẽ ích lợi trong công việc về sau. Anh đừng lo tụi em hết hứng thú :)"
'docco' cũng chêm thêm:
"Hay là anh .... nản thì có. Nói chuyện với bọn em cái gì anh cũng phải giải thích. Gặp em, chắc em nản từ lâu rồi."
Tôi đáp:
"Hì hì, nản hả? có gì mà nản em? Thỉnh thoảng vào 'đà khía' thế này vui mà. Thôi, anh phải logoff đây. Ngồi dính một chỗ lâu quá rồi. Anh vẫn còn ở nhà vài ngày tới, trưa trưa anh sẽ vào check mail mỗi ngày, đứa nào muốn 'đà khía' thì offline message cho anh một cái ha."
'ccxx' cười, pha trò:
"Í cha, anh già rút... đẹp thiệt à nha. Ảnh rào câu áp chót, chuyển qua câu chót là bye bye liền :). Mai em cũng rảnh á, em sẽ online chờ anh."
'cuti' hùa theo:
"Em cũng vậy."
'docco' thận trọng:
"Nếu không có gì đột xuất, em cũng sẽ online luôn."
Tôi đáp:
"Ừa, cũng khoảng giờ này hoặc sớm hơn vào ngày mai hả? Chào mấy đứa."
26/9/2005
<còn tiếp>

markdown:
**12. Information... What for? - I** *Mấy tuần qua tôi quá bận rộn nên đã 'lờ' khá nhiều mail và offline messages từ bộ ba 'cuti', 'haothu' và 'docco' và tất nhiên tôi cũng lờ khá nhiều mail từ những người khác.* *Tôi được nghỉ bù liên tiếp ba ngày (cộng với hai ngày cuối tuần là năm ngày). Dự định sẽ đưa gia đình đi chơi đâu đó, không ngờ trời đổ mưa tầm tã cho nên đành phải thúc thủ trong nhà. Tôi quyết định online để đọc mail, trả lời mail và xem offline messages. Như dự đoán, tôi có hàng trăm email trong inbox và hàng 'tấn' offline messages. Đang trong lúc thong thả đọc và trả lời từng cái (đáng trả lời), YIM bỗng nhiên báo 'cuti' vừa vào. Tôi hết sức ngạc nhiên vì lúc này bên VN mới có 7 giờ sáng. Không hiểu 'cuti' làm gì mà mò vào YIM sáng tinh mơ như thế. Tôi bèn gởi anh chàng một message:*
"Hello Hưng, làm gì mà mò lên đây sớm quá vậy?"
*Trong tích tắc, tôi nhận được hồi báo:*
"Ui trời, hôm nay là ngày gì mà đặc biệt vậy? Sao giờ này anh lên đây, bộ anh không đi làm sao?"
*Tôi đáp:*
"À, anh được mấy ngày nghỉ bù, định đi chơi đâu đó nhưng trời đang mưa tầm tã nên lên web dạo chơi :). Còn em làm gì mà dậy sớm vậy?"
*'cuti' trả lời có vẻ uể oải:*
"Dạ, đáng lẽ hôm nay em đi học nhưng bị cúm mấy hôm nay, trong người còn thấy nhừ quá nên ở nhà. Em dậy hồi sớm à. Nằm hoài trong giường buồn quá nên mò lên net chơi. Vậy anh em mình 'đà khía' lai rai được hông anh?"
*Tôi cười, đáp:*
"Nếu trời cứ mưa thì anh em mình tha hồ mà 'đà khía' nhưng trời tạnh mưa thì anh sẽ dẫn mấy thằng nhóc đi chơi. Em muốn 'đà khía' gì đây?"
*'cuti' khoái chí:*
"Hi hi, em muốn trời mưa hoài. Anh em mình 'đà khía' chuyện gì mà không được anh? Chuyện trên trời, dưới đất cho vui mà. À, em có một chuyện cũng buồn cười lắm. Anh muốn nghe không?"
*Tôi ngần ngừ:*
"Èm... cũng tùy chuyện đó là chuyện gì nữa em. Nếu em nghĩ là anh thích nghe thì em kể đi."
*'cuti' bẽn lẽn"*
"Cũng chẳng có gì đặc biệt đâu anh. Chuyện em với con 'ghệ' bồ đó mà."
*Tôi đáp:*
"Ui trời, 'nàng tiên của lòng anh' mà sao gọi là 'con ghệ' vậy em? ;-)"
*'cuti' cười, trả lời câu hỏi của tôi:*
"Anh không biết đó thôi, đó là cách gọi thân mật và âu yếm đó thôi mà."
*Tôi trả lời:*
"Ái chà... có lẽ anh lỗi thời rồi. Anh mà gọi bà xã anh là 'con ghệ' thì chắc nguy to ;-). Ừa, em kể đi, có chuyện gì với 'con ghệ' mà em có vẻ phấn khởi vậy?"
*'cuti' bắt đầu:*
"Anh còn nhớ hồi bữa, lần cuối cùng bốn anh em mình 'đà khía' hông? Thật ra hôm đó em có hẹn với 'con ghệ' nhưng em quyết định cho nó leo cây. Ai biểu tắt di động làm chi, em gọi hoài không được nên... xù."
*Tôi thắc mắc:*
"Tắc di động là tắc thế nào em? anh không hiểu lắm."
*'cuti' phát biểu:*
"Kiểu này anh phải về VN làm một khóa tu từ đi anh, 'di động' là điện thoại di động đó. Hì hì."
*Tôi đáp:*
"À... hoá ra là thế. Anh cứ ngỡ con mèo di động hay con chuột di động gì đó ;-)"
*'cuti' tiếp tục:*
"Em phải dùng từ cẩn thận không thì lại bị anh kê cho. Tối hôm đó, 'con ghệ' đợi hoài không thấy em đến nên nổi 'khùng' lên. Điện thoại di động em thì hết pin mà cũng chưa kịp sạc nữa. Thế là ẻm bèn phóng xe đến nhà em. Chưa giáp mặt, đã mắng em xối xả vì em đã cho bả leo cây."
*Tôi xen vào:*
"Vậy là tốt rồi, 'nường' còn chịu khó phóng xe đến nhà em để mắng thì không có gì trầm trọng. Rồi sao nữa."
*'cuti' cười, nói tiếp:*
"Hì hì, anh không rõ đó thôi. Con bồ em tánh nóng như lửa, có gì là huỵch toẹt ra hết. Lúc đó nghe thì cũng ngứa con ráy lắm nhưng riết cũng quen. Nó buộc tội em là mê net, mê chat với 'con quỷ cái' nào đến nỗi phải cho nó leo cây. Em cố sức phân trần nhưng không hiệu quả. Rốt cuộc em phải cho nó xem nội dung mấy anh em mình 'đà khía' nó mới chịu yên."
*Tôi cười:*
"Hì hì, hoá ra trước đó em chưa hề kể cho 'con ghệ' nghe về mối quan hệ 'bất chính' của mấy anh em mình sao?"
*'cuti' trả lời:*
"Dạ, em định kể cho nó nghe nhiều lần nhưng cứ mỗi lần đi chơi mà đề cập đến tin học, đến máy tính là nó gạt phăng đi. Nó nói
*"bộ ôm máy cả ngày, cả tuần chưa đã nư sao mà hễ mở miệng ra là máy tính, máy tính"*nên em... im luôn." *Tôi đáp:*
"Thú vị lắm. Vậy sau đó thế nào em?"
*'cuti' cười hớn hở:*
"Dạ sau đó thì tụi em đi uống nước một chút rồi về. Lúc mấy anh em mình kết thúc thì bên đây mới có 7 giờ tối chớ mấy anh. Thế là trong lúc đi uống nước, 'con ghệ' cứ đem chuyện mấy anh em mình 'đà khía' ra hỏi dồn. Em nói với nó là em có lưu lại nội dung anh em mình chat, để em cho nó một bản để đọc cho khỏi thắc mắc."
*Tôi đáp:*
"Ừa, con gái là chúa tò mò mà em. Cái gì càng dấu, càng thích tò mò ;-)."
*'cuti' cười hi hi, rồi nói tiếp:*
"Chưa hết. Sau khi em đưa cho nó cái file chứa nội dung anh em mình chat, mấy ngày sau nó nhất định đòi em phải giới thiệu anh cho nó. Nó cũng muốn tham gia 'đà khía' với mấy anh em mình luôn. Em nói là em sẽ chuyển lời nhưng em không hứa gì hết."
*Tôi cười ghẹo 'cuti':*
"Hì hì, được dịp trả đũa nên làm khó 'nường' hay sao đây? Hoá ra là chuyện con bé muốn tham gia :). Thì cứ dẫn 'nường' lên 'đà khía' chung chớ có gì quan trọng đâu em?"
*'cuti' trả lời:*
"Em nói thiệt mà anh. Em không thể hứa gì nó vì em không biết hay sẽ nói gì. Lỡ may em đề nghị và anh phán
*con gái, con lứa mà bày vẽ, lắm chuyện*thì có quê cả đám hông à." *Tôi đáp:*
"Có gì mà không ok em. Kêu nó tham gia cho vui chớ có sao đâu à."
*"cuti" trả lời:*
"Dạ, để em báo cho nó biết. 'Con gái, con lứa' mệt lắm anh ơi, khi thế này, khi thế kia, chẳng biết đường nào mà mò."
*Bên ngoài mưa đã ngớt. Tôi đoán mấy thằng nhóc của tôi sắp sửa vòi vĩnh chuyện đi chơi đây. Cho nên tôi cho 'cuti' biết:*
"Có lẽ anh sẽ đi chơi với mấy thằng nhóc. Trời bên này đã tạnh mưa rồi em. Chiều tối nay anh ở nhà, nếu thích em rủ đám Khoa, Duy và 'con ghệ' vào đà khía cho vui."
*"cuti" hớn hở:*
"Dạ, vậy thì vui quá. Em bệnh nằm nhà hoài chán quá. Được đà khía vậy thì quá đã. Để em điện cho tụi nó liền. Vậy khoảng mấy giờ anh lên?"
*Tôi phỏng chừng:*
"Anh đoán khoảng 4, 5 giờ chiều bên em đó, có tiện không?"
*'cuti' chậc lưỡi đáp:*
"Chậc chậc... hơi kẹt đó anh. Bọn em thì dễ nhưng con Như chắc kẹt vì em đoán giờ đó nó phải nấu cơm chiều rồi. Thôi kệ nó vậy. Khi khác cho nó tham gia cũng được."
*Tôi 'chỉnh' 'cuti':*
"Hèm... nó là girl friend của em mà cứ 'con' với 'nó' nghe hông 'ngọt' tí nào hết em. Vậy ngày mai khoảng 2 giờ trưa bên em được hông?"
*'cuti" trả lời:*
"Dạ, 2 giờ trưa thì chắc ok rồi anh. Nó có lên trễ một tí cũng không sao. Còn chuyện 'nó' với 'con' em bị quen miệng rồi anh ơi. Gọi thế nào cho ổn đây anh?"
*Tôi đáp:*
"Kêu bằng tên đi em và cũng không cần phải đệm thêm chữ 'con' :). Rồi, 2 giờ trưa bên em hả? Anh đi đây."
*'cuti' phàn nàn:*
"Dạ chào anh. Đúng là anh già khó tính, thêm chữ 'con' cũng không được ;-)."
*Tôi logoff.*
----------------------------
*Chiều hôm sau, như đã hẹn, tôi lại logon YIM. Khi vào, tôi thấy hai khuôn mặt 'vàng khè' của 'cuti' và 'docco' cộng thêm một 'request for accept' của một người có cái nick khá ngộ nghĩnh và bí hiểm là* **ccxx**kèm theo thông điệp ngắn gọn: "Dạ em là Như đây, bạn của Hưng, Khoa và Duy đó anh. Anh add em được không ạ?". Hiển nhiên là 'cô bồ' của 'cuti' nhà mình. Tôi nhấn nút "accept" và một khuôn mặt 'vàng khè' trên cái nick ccxx hiện ra trên danh sách YIM của tôi. Chẳng thấy 'haothu' đâu cả, hay anh chàng đang 'invisible'?
Trong tích tắc, một "conference invitation" được ccxx gởi đến. Trong khi nhấn nút "Accept", tôi thầm nghĩ "chà, cô bé này có vẻ nhậm lẹ đây".
Trong 'conference room' có 'cuti', 'docco' và 'ccxx' nhưng chẳng thấy bóng dáng 'haothu' đâu cả. 'ccxx' lên tiếng:
Trong tích tắc, một "conference invitation" được ccxx gởi đến. Trong khi nhấn nút "Accept", tôi thầm nghĩ "chà, cô bé này có vẻ nhậm lẹ đây".
Trong 'conference room' có 'cuti', 'docco' và 'ccxx' nhưng chẳng thấy bóng dáng 'haothu' đâu cả. 'ccxx' lên tiếng:
"Chào 'anh già khó tính' ạ. Em xin tự giới thiệu em là Như. Rất vui được làm quen với anh."
*Tôi mỉm người, tự nhủ "con bé liếng quả nhỉ" và đáp lễ:*
"Chào Như, cũng bắt chước cu Hưng gọi anh là 'anh già khó tính' sao? Còn 'haothu' đâu rồi mấy đứa?"
*'ccxx' trả lời lẹ làng:*
"Dạ, em nghe nói nó bị kẹt. Không rõ bị kẹt gì mà không online được anh."
*Lúc này 'cuti' và 'docco' mới lên tiếng:*
"Chào anh già khó tính, anh đi chơi với mấy nhóc có vui không?"
"Chào anh D, mới có vài tuần mà em thấy như hàng tháng vậy. Anh khoẻ không?"
*Tôi đáp:*
"Ừa, đi chơi cũng vui lắm em. Anh cũng khỏe, còn em dạo này sao Duy?"
*'docco' trả lời:*
"Dạ em cũng bình thường anh. Dạo này em đọc nhiều hơn và ít đi chơi hơn :)"
*Tôi đáp:*
"Tốt quá vậy? Anh tin là em 'luyện' được mấy 'tầng nội công' rồi đó :). Ừa, nãy giờ anh thử đoán cái nick ccxx là cái gì. Anh nghĩ là đoán đúng hông chừng."
*'ccxx' cười khoái chí:*
"Anh đoán ra được em phục lăn liền đó. Hồi giờ chưa có ai đoán ra được cái 'bí ẩn' đằng sau cái nick này đó anh."
*Tôi cười, đáp:*
"Ừa, nếu vậy dám anh đoán sai lắm đó. Anh nghĩ ccxx là 'công chúa xấu xí' phải không?"
*Cả ba 'cuti', 'docco' và 'ccxx' cùng trả lời gần một lượt:*
"Ồ"
"wow"
"độc thiệt"
*và 'ccxx' nói tiếp:*
"Sao anh đoán một cái là trúng phóc liền dzị? Em thiệt là phục lăn đó. Mấy người trên mạng toàn liên tưởng cái nick của em đến những thứ bậy bạ không à."
*Tôi đáp:*
"Chắc là mấy 'anh chàng' trên mạng đoán được nhưng không dám nói, sợ em giận vì nó có hai chữ 'xấu xí' bên trong. Anh nhìn qua chữ ccxx tự nhiên anh liên tưởng ngay đến 'công chúa xấu xí' liền. Nhưng mà, ccxx có gì mà liên tưởng đến những thứ bậy bạ vậy em?"
*'ccxx' phụng phịu:*
"Anh không biết đó thôi. cc là credit card chùa đó anh, còn xx là mấy thứ... ùm.... à... tầm bậy tầm bạ đó. Thôi, em không nói nữa. À nhưng mà anh không sợ em giận sao mà nói thẳng hai chữ 'xấu xí' dzị? :)"
*'docco' xen vào:*
"Thì xấu thì chấp nhận xấu chớ có gì mà giận cà."
*'ccxx' phản công:*
"Còn ông nữa, còn chừng ông nghe ông."
*Tôi cắt ngang:*
"Hì hì, anh nghĩ hai chữ 'xấu xí' đó thật ra hàm chứa một chút kiêu hãnh ngầm đó thôi. Có ai tự cho mình 'xấu xí' bao giờ? Nếu có thì cũng 'ngầm' khen mình 'xinh đẹp' ;-). Bởi vậy, anh chẳng ngại nói ra hai chữ này. Riêng với những người liên tưởng cái nick của em thành những thứ bậy bạ thì chính họ thiệt thòi thôi. Đừng để ý làm gì."
*'ccxx' thốt:*
"Kinh khủng, kinh khủng. Em đọc những lời anh đối thoại với đám Hưng, Khoa, Duy đã thấy miệng lưỡi của anh kinh khủng. Giờ trực tiếp nói chuyện mới thấy quả là không sai :). Thôi, em nghĩ ngoài việc 'đà khía' chuyện tin học, máy tính, anh nên huấn luyện ông Duy một khoá 'ái tìn' đi anh. Ông này cũng tốt mã, học giỏi mà sao vẫn chưa có một 'miểng tìn rách rưới' nào hết. Em bảo đảm anh huấn luyện cho ổng một khoá là thành công ngay."
*'docco' luống cuống:*
"Thôi.. thôi.. đi bà. Cho tui xin mà. Nhưng không cái gì mà 'tìn tìn' trong này. Thôi anh, mình nói chuyện tin học vui hơn."
*'ccxx' cười ré lên:*
"hi hi hi, tui đoán mặt ông Duy lúc này đang đỏ như 'mặt trời bé con' đó. Thôi, tha cho ông một lần đó. Vậy mấy anh em mình nói chuyện gì đây?"
*'cuti' lúc này mới lên tiếng:*
"Anh thấy... anh thấy Như hoạt bát hông anh? Hay để Như chọn đề tài được đó."
*Tôi cười, đáp:*
"Hì hì, anh thấy 'nhà' em hoạt bát lắm, muốn 'lăng xê' nàng liền hả? Hy vọng sẽ có nhiều chuyện lý thú đây :)."
*'ccxx' phát biểu một câu thật ngắn rồi bỏ dở:*
"Em công nhận anh nói chuyện 'kinh' thiệt.... [/i]
*'docco' cười thích thú:*
"Hi hi, cám ơn anh D gỡ dùm em một quả. Em dám chắc lúc này mặt bà Như đỏ hơn 'mặt trời bé cha' nữa ;-)"
*Chỉ qua vài câu đối thoại, bọn tôi đã trở nên thoải mái như đã quen thân nhau từ lâu. 'docco' hình như muốn cắt ngắn những chuyện cà rỡn để bắt đầu 'đà khía' những chuyện cu cậu thắc mắc. 'docco' lên tiếng:*
"Thôi, 'đả qua đả lại' một hồi coi chừng thế chiến thứ III bắt đầu bây giờ. Mình nói chuyện khác đi hả bà con?"
*'docco' nói tiếp:*
"Em có tham khảo qua các vấn đề thuộc về reconnaissance rồi đó anh nhưng em thấy có nhiều điểm lờ mờ quá. Em thấy có cái thì gọi là 'enumeration', cái thì gọi là 'interrogation', cái lại gọi là "reconnaissance". Em thử so sánh thì thấy rằng chúng cùng phục vụ cho mục đích thăm dò. Vậy cái nào là cái nào đây anh?"
*Tôi cười, đáp:*
"Hì hì, nhảy ngay vào kỹ thuật hả? Chắc em sợ mình lại 'lạc đề' sang những chuyện khác chớ gì? Đúng là những thuật ngữ em liệt kê ra ở đây đều tựu trung vào tinh thần chung:
**thăm dò**. Reconnaissance dịch sát nghĩa là 'khai thác thông tin' và 'interrogate' và 'enumerate' dính líu trong tiến trình khai thác này. Trong đó, 'interrogate' dịch sát nghĩa là 'hạch hỏi' và 'enumerate' là 'đếm'. Nắm được những thuật ngữ này cũng có ích để hiểu sâu từng phân đoạn của quá trình thăm dò. Tuy nhiên, nếu em cảm thấy bối rối với những thuật ngữ này thì khoan hẵng tìm cách 'dịch' chúng sang tiếng Việt vì có những từ dịch không được hoặc không đủ lột tả tinh thần. Cứ tiếp nhận chúng như những thuật ngữ vậy thôi. Sau này em sẽ rõ hơn." *'ccxx' xen vào:*
"Thôi để anh già và Duy đối thoại hén? Em với Hưng ngồi nghe. Có gì thắc mắc bọn em tham gia sau."
*'docco' trả lời gọn lỏn:*
"Ừa, vậy càng tốt. Đỡ bị loãng."
*Rồi hỏi tiếp:*
"Vậy tóm lại quá trình thăm dò bao gồm những bước chính nào vậy anh? Và tại sao phải thực hiện những bước này?"
*Tôi đáp:*
"Đáng lẽ ra anh phải hỏi em câu hỏi này để giúp em tổng hợp những gì em đã đọc. Tuy nhiên, em có vẻ khá bối rối với những thuật ngữ kia. Anh e rằng em đang rối... tùng phè lên trong đó nên để anh tóm tắt luôn vậy.
Thật ra không có một luật nào bắt buộc phải thao tác đúng từng bước để phục vụ mục đích thăm dò cả. Tùy mục tiêu và tùy khả năng phòng bị và thắt chặt của mục tiêu mà khai triển kế hoạch thăm dò cho thích hợp. Anh nghĩ mình có thể tóm gọn chúng lại thành ba phần chính:
- tìm dấu ấn (footprinting) --> xác định mục tiêu tổng quát
- rà quét (scanning) --> xác định các dịch vụ tổng quát
- lấy số liệu cụ thể (enumerating) --> thu thập thông tin cụ thể.
Em thử suy luận xem, tại sao phải tìm dấu ấn? tại sao phải rà quét và tại sao phải thu thập thông tin cụ thể?"
*'docco' rụt rè:*
"Dạ... em nói đại nghe? Tìm dấu ấn để xác định hệ điều hành nào mình đang đối diện nhằm thu hẹp biên độ dò tìm và khai triển bước kế tiếp được chính xác hơn. Còn rà quét thì em nghĩ... đã tiến tới một bước rất cụ thể là tìm xem có những dịch vụ nào đang được cung cấp trên mục tiêu mình muốn thăm dò để thiết lập kế hoạch thâm nhập. Còn lấy số liệu cụ thể... ùmm... à... em không biết nữa."
*Tôi cười, cổ vũ 'docco':*
"Em trả lời hai phần đầu vậy là súc tích và chính xác lắm rồi. Tất nhiên phần thứ ba là phần lấy kết quả, là phần kết thúc quá trình thăm dò chớ còn gì nữa em? Bước này càng cụ thể hơn bước thứ nhì là mình dùng nó để thiết lập
**bước**thâm nhập. Vậy mình có thể thêm vào bảng liệt kê ở trên như sau:
- tìm dấu ấn (footprinting) --> xác định mục tiêu tổng quát --> thu hẹp biên độ thăm dò
- rà quét (scanning) --> xác định các dịch vụ tổng quát --> thiết lập kế hoạch thâm nhập
- lấy số liệu cụ thể (enumerating) --> thu thập thông tin cụ thể --> thiết lập bước thâm nhập
Em thấy có gì đặc biệt với bảng liệt kê này không?"
*'ccxx' xen vào:*
"Càng lúc càng cụ thể phải không anh?"
*Tôi đáp:*
"Đúng rồi đó em. Càng lúc càng cụ thể và càng cụ thể càng tốt. Thật ra 3 'bước' ở trên có thể kết hợp lại thành 1 'bước', cũng có thể tách rời ra làm 2 'bước' hoặc mở rộng ra thành... mấy chục bước. Với mục đích dò tìm thông tin thì miễn sao tìm được thông tin cụ thể và chính xác là được, không nhất thiết phải theo... 'bước'."
*'cuti' thắc mắc:*
"Nhưng tại sao tìm footprint lại quan trọng thế anh? Em thấy một web server apache chạy trên Windows 2000 và một web server apache chạy trên Linux đâu có khác gì đâu anh?"
*Tôi đáp:*
"Nếu nhìn một cách tổng quát trên phương diện người dùng thì nhận định của em không sai nhưng nếu xét cẩn thận về mặt kỹ thuật thì nhận định của em chưa.... hoàn toàn đúng. Trên phương diện người dùng, cả hai apache (em đưa ra) đều nhận request, xử lý request, đều có thể gắn với asp, jsp, php, cgi... để tạo trang động nhưng xét cho cặn kẽ thì cơ chế quản lý bộ nhớ lẫn cơ chế điều tác process trên hai hệ điều hành khác nhau rất xa. Những khác biệt này dẫn tới chiến lược phòng thủ hay tấn công rất khác nhau. Việc nhận diện dấu ấn của mục tiêu không chỉ giúp giới hạn biên độ thăm dò và khai thác mà nó còn trực tiếp ảnh hưởng đến việc:
- quyết định 'tấn công' hay 'rút lui' (nói theo phương diện tấn công) hoặc,
- quyết định 'thắt chặt thêm' hay 'xây dựng lại từ đầu' (nói theo phương diện phòng thủ)."
*'cuti' vẫn thắc mắc:*
"Em vẫn thấy vấn đề này hơi mù mờ đó anh. Nếu cần tấn công một webserver apache có chạy php chẳng hạn thì cũng bấy nhiêu kỹ thuật như sql inject, xss... vậy thì chạy trên Windows hay trên *nix đâu có khác gì?"
*Tôi trả lời:*
"Em nói đúng nhưng cái đúng này bị áp đặt trong một giới hạn khá hẹp. Tấn công và thâm nhập một dịch vụ (web chẳng hạn) không chỉ dừng lại ở sql inject và xss. Đây là những kỹ thuật phổ biến và dễ thực hiện, hơn nữa những lỗi này lại thường thấy nên thường được chú trọng. Nếu 'tấn công' chỉ dừng lại ở chỗ 'chôm' được admin password của một forum hay đưa lên một thông điệp trên một trang web để 'deface' thì mấy kỹ thuật em đề cập đã đủ dùng. Nếu thế thì phạm vi reconnaissance ở đây rất nhỏ hoặc không cần thiết nữa. Những điều anh đưa ra ở đây có thể dùng để ứng dụng nhiều khả năng và kỹ thuật thâm nhập hơn nữa, cho nên reconnaissance trở nên cần thiết. Ví dụ, em muốn chạy shellcode đến dịch vụ web của server để lấy một cái 'shell' cho mục đích thâm nhập sâu hơn nhưng không xác định chính xác hệ điều hành của mục tiêu thâm nhập là gì thì không có cách gì tạo shellcode được. Lý do, shellcode của mỗi hệ điều hành mỗi khác.
Nếu mục tiêu thâm nhập càng sâu thì quá trình reconnaisance đòi hỏi càng phải cẩn thận và chi tiết. Ngay cả những 'màn' tấn công thuộc loại 'dơ' như DoS chẳng hạn, để thực sự 'giết' mục tiêu mình muốn DoS, em phải hiểu rất rõ điểm yếu của hệ điều hành và dịch vụ đang chạy. DoS 'chết' một Windows server chạy Apache + php (dùng prefork) và không có database connection pool nhanh hơn DoS chết một Linux server chạy Apache + jsp (dùng worker) và có connection pool hẳn hòi. Những chi tiết này ở đâu ra? Đó chính là kết quả quả 'reconnaissance' đó em.
Năm ngoái, một server do anh quản lý (chạy Linux) bị mấy 'ông thần' nào đó dùng 'ping of death' để tấn công. Điều buồn cười là dạng 'ping of death' này dành cho Windows phiên bản cũ, bị lỗi ở phần giới hạn packet size của ICMP làm treo máy khi bị tấn công. Anh không hiểu sao nhóm này cứ hè nhau mà tấn công Linux server của anh bằng một thứ công cụ dành để tấn công Windows. Hơn nữa, Linux server của anh hoàn toàn cản mọi inbound ICMP và UDP. Các gói tin ICMP và UDP chỉ có thể đi vào khi chúng mang vai trò trả lời cho các request đi từ bên trong Linux server mà thôi. Điều này có nghĩa những gói ICMP họ 'tia' vào server của anh bị huỷ ngay khi đụng firewall. Vậy mà nhóm này vẫn nhắm mắt, nhắm mũi 'tia' đến mấy tiếng liên tục rồi mới chịu ngưng. Tất nhiên dạng tấn công như thế chẳng làm suy suyển server của anh mảy may nào hết. Điều đáng nói là nguồn tấn công hoàn toàn đi từ VN ra và điều đáng buồn là những 'ông thần' này không thèm tìm hiểu xem 'ping of death' là gì, thật sự đã tạo ra tác hại gì đến server của anh không. Có lẽ mấy 'ông thần' này tìm đâu ra mấy cái script viết sẵn trên Internet rồi hè nhau mà 'ria' vào server của anh chăng?"
*'docco' lè lưỡi (một biểu tượng được dùng trên YIM) rồi lên tiếng:*
"Ái chà, bây giờ em mới hiểu lý do tại sao reconnaissance lại quan trọng như thế. Lúc đọc tài liệu, em cứ ngỡ đây là những bước cần phải làm cho đúng nguyên tắc và chẳng thấy có phân tích mấu chốt của reconnaissance là gì hết. Em cũng có đọc sơ sơ qua về shellcoding và thấy hoàn toàn mù tịt. Còn chuyện mấy 'ông thần' tìm đồ chơi trên mạng rồi đi 'ria' là chuyện thường ngày mà anh? :)"
*Tôi đáp:*
"Anh nghĩ sách vở thường giới thiệu những điểm chung nhất và dễ tiếp nhận nhất. Sau khi thử nghiệm, tự nhiên em sẽ 'ngộ' ra lý do của từng phân đoạn trong cả một quá trình thực hiện. Những người càng kinh nghiệm về bảo mật thì bước thăm dò của họ càng chiếm nhiều thời gian. Đối với một kẻ có chủ trương 'tấn công', hắn phải dò xét hết sức cẩn thận trước khi bắt tay vào thực hiện ý định của mình để đạt được mục đích, ít tốn thời gian, ít có cơ hội bị... tóm. Cũng lắm lúc, kẻ này bỏ cuộc vì sau khi dò xét cẩn thận, hắn cảm thấy không đáng để mất thời gian. Đối với người phòng thủ, quá trình 'dò xét' lại càng khó hơn bởi vì người phòng thủ phải đặt mình vào vị trí khách quan, phải test hệ thống của mình y như một 'black box' thật sự rồi từ đó mới đi đến việc kiện toàn bảo mật."
*'cuti' nhận xét:*
"Nhưng làm sao mình có thể dò xét ra một server nào đó đang chạy Windows, dùng php và dùng prefork chớ không phải nó đang chạy Linux, dùng jsp và dùng worker vậy anh? Bộ 'reconnaissance' có thể cung cấp thông tin ở mức độ này luôn sao?"
*Tôi cười, đáp:*
"Cái này tùy vào khả năng thăm dò của em. Có nhiều yếu tố để giúp em đi đến chỗ kết luận là mục tiêu thăm dò của em có cái gì. Bởi vậy, như anh đã nói, giai đoạn reconnaissance có thể là giai đoạn mất thời gian nhất. Riêng chi tiết Windows chạy apache với php hay Linux chạy apache với jsp thì phần lớn em cần có một số kiến thức và dùng khả năng suy luận để đưa về một kết luận nào đó có lý nhất."
*'cuti' càng thêm tò mò:*
"Vậy có nghĩa là sao anh? anh nói sâu hơn một tí được không anh?"
*Tôi đáp:*
"Hèm... ok, để anh thử tóm gọn xem sao. Nếu em rành php, em hẳn biết là php trước phiên bản 5.x hoàn toàn không thread-safe. Ngay cả những người đang dùng php 5.x không không mấy ai 'dám' dùng ở chế độ 'thread-safe' cả. Nếu em dò một website và biết rằng nó chạy bằng php trên apache, em có thể đoán 99% là nó chạy ở chế độ prefork. Nếu em chịu khó dò thêm footprint của hệ điều hành và xác định được nó chạy trên Windows server thì em có thể xác định
**nó chạy php trên apache với chế độ prefork**. Tương tự, nếu em dò một website và biết nó chạy bằng jsp, em có thể đoán 99% là nó chạy ở chế độ worker. Nếu xác định được thêm hệ điều hành là Linux thì em càng có thể khẳng định **nó chạy jsp trên apache với chế độ worker**. Tất nhiên, thu thập càng nhiều thông tin, càng giúp em khẳng định phỏng đoán của em chính xác và để thu thập nhiều thông tin thì 'reconnaissance' càng mất thời gian là vậy. Nên nhớ là luôn luôn có những sai số trong 'reconnaissance' vì người phòng thủ cố tình dấu footprint hoặc đánh lừa các công cụ em dùng để lấy footprint. Những sai số này càng nhiều thì kết quả càng ít đáng tin cậy." *'cuti' gật gù:*
"Hoá ra đây là cả một nghệ thuật chớ chẳng đùa. Những kiến thức và kinh nghiệm cho việc xác định 'nó' chạy php hay jsp cũng đủ đã điên cái đầu rồi. Dân không đụng những chuyện này thì biết đường nào mà mò anh? Như vậy rõ ràng kiến thức có sẵn tuyệt đối quan trọng. Nếu không có thì ngay cả việc thăm dò cũng không thể được. Biết gì mà thăm dò?"
*Lần này 'ccxx' góp chuyện:*
"Thì bởi, em đọc những mẩu đối thoại của anh già khó tính và mấy ông tướng này, em thấy anh nhấn mạnh rất nhiều lần cái gọi là 'ngọn ngành'. Những mẩu thông tin nho nhỏ đều đi từ 'ngọn ngành' ra phải không anh?"
*Tôi cười, đáp:*
"Đúng đó 'công chúa xinh đẹp' :). Anh có lặp đi lặp lại nhiều lần: 'muốn bảo vệ hay tấn công, mình phải nắm rõ mục tiêu' là vậy đó. 'reconnaissance' chính là bước để giúp 'nắm rõ mục tiêu' ở khuôn khổ 'blackbox' vậy."
*'docco' xen vào hỏi thêm:*
"Khái niệm 'blackbox' là sao anh? Với lại 'prefork' khác gì với 'worker' vậy anh?"
*Tôi đáp:*
"Em chưa từng nghe qua 'blackbox' và 'whitebox' sao? Sẵn đây mình nên làm quen với khái niệm này luôn. 'blackbox' chỉ cho hoàn cảnh thử nghiệm một server mình hoàn toàn không biết gì về nó; mình chỉ ở bên ngoài, chọc ngoáy nó để tìm thông tin mà thôi. Trong khi đó, 'whitebox' là một server mình nắm rõ nó có những gì, nó hoạt động ra sao và cung cấp những gì. Những công ty tư vấn về bảo mật thường thử nghiệm độ bảo mật của hệ thống theo dạng 'blackbox' là chính. Họ không biết gì về hệ thống của khách hàng cả nhưng họ vận dụng mọi phương tiện để thẩm định độ bảo mật của hệ thống này. Sau khi hoàn thành giai đoạn 'blackbox' rồi họ mới đi đến giai đoạn 'whitebox' và mới giới thiệu phương án phòng thủ. 'whitebox' test thường dùng để thử nghiệm tính năng và hoạt động của hệ thống dựa trên một số thước đo nào đó.
Riêng 'prefork' và 'worker' thì thế này. Đúng ra mình phải dùng thuật ngữ 'process' và 'thread' thì thích hợp với tinh thần mình bàn ở đây hơn. Lý do anh dùng 'prefork' và 'worker' là vì mình đang nói về webserver apache và những thuật ngữ này là những thuật ngữ của apache. 'prefork' là cơ chế xử lý request của apache bằng cách tạo
**process**. Process thì thường nặng nề, tốn tài nguyên và kém hiệu xuất nhưng được một điểm là rất bền, ít bị sự cố. Trong khi đó, 'worker' là cơ chế xử lý request của apache bằng cách tạo **thread**. Thread thì nhẹ nhàng, ít hao tốn tài nguyên hơn, hiệu xuất hơn nhưng lại có nhược điểm là kém bền bỉ, dễ bị sự cố. Nói trên bình diện bảo mật và đặc biệt là tính hiệu xuất cũng nhưng tính bền bỉ của một dịch vụ, mỗi chọn lựa đều có điểm ưu và khuyết. Tuỳ nhu cầu và hoàn cảnh mà chọn cho thích hợp." *'cuti' diễu:*
"He he, đừng bắt bọn em phải học kỹ về thread và process đó nha anh. Chết tụi em đó :)"
*Tôi đáp:*
"Lại 'bắt' ;-). Anh chẳng bao giờ 'bắt' em phải làm gì cả. Đến một lúc nào đó, tự nhiên em cảm thấy cần phải hiểu về 'thread' và 'process' thì tự nhiên em tìm hiểu thôi. Lúc ấy anh có 'bắt' em
**không tìm hiểu**cũng chả được. Nói đùa vậy thôi, nếu **siêng**, em nên tìm hiểu dần dần về 'thread' và 'process'. Theo anh, đây là một trong những 'đơn vị' nền tảng của những điều em đang làm quen đó." *'docco' cảm thán:*
"Không ngờ từ chuyện này lại dẫn đến bao nhiêu là chuyện khác. Đúng là 'bể học mênh mông, dục tốc bất đạt' thật không sai tí nào."
*Tôi cười, động viên 'docco':*
"Thong thả thôi em, việc gì phải 'dục tốc' để rồi 'bất đạt'? Đừng tham quá mà đi đến chỗ 'bội thực' mà thôi."
*'docco' hỏi tiếp:*
"Vậy khái niệm 'active' và 'passive' recconnaissance mà anh đề cập lần trước liên quan thế nào đến 3 bước ở trên vậy anh?"
*Tôi ngẫm nghĩ "chà, các 'bước' là các* **bước**còn 'active' hay 'passive' là **dạng**. Làm thế nào để cu cậu đừng lẫn lộn đây nhỉ?", thế rồi tôi trả lời:
"Thế này, 'active' hay 'passive' là các
**dạng**thăm dò, còn 3 bước ở trên là cụ thể các **bước**khai triển. Em có thể dùng **dạng**'active' hoặc 'passive' hoặc cả hai dạng này để thực hiện 3 **bước**ở trên. Đây là mối liên quan mà em thắc mắc đó." *'cuti' nhanh nhảu:*
"Vậy... ví dụ bước một, khi nào mình dùng 'active', khi nào mình dùng 'passive' anh?"
*Tôi hỏi ngược lại:*
"Vậy em còn nhớ mục đích của việc dùng 'active' và 'passive' để thăm dò không?"
*'cuti' đáp:*
"Dạ nhớ chớ anh. 'ative' chính xác hơn nhưng ít kín đáo hơn. 'passive' kín đáo hơn nhưng ít chính xác hơn. Nhưng ý em là trong lúc tìm footprint, khi nào thì thao tác 'passive', khi nào thì dùng 'active' đó mà."
*Tôi chỉnh 'cuti' ngay vì không chịu suy nghĩ mà chỉ hỏi 'trơn':*
"Em vừa trả lời ngay câu hỏi của em đó thôi. Nếu đã nắm được
**'ative' chính xác hơn nhưng ít kín đáo hơn. 'passive' kín đáo hơn nhưng ít chính xác hơn**thì tại sao không dùng nó mà ứng dụng? Anh nghĩ em nên động não hơn một tí đó Hưng." *'ccxx' xen vào:*
"Anh nói đúng đó, ông Hưng này có cái tật dễ thì đâm lười đó anh. Anh quay ổng như 'dế' thì ổng sẽ động não thôi, đừng trả lời mọi câu hỏi của ổng là cách hay nhất. Em biết lắm mà :)."
*Tôi cười, đáp:*
"Ừa, em mà không biết cu Hưng 'lắm' thì còn ai biết nữa em? Thôi... em 'quay nó như dế' dùm anh nha?"
*'ccxx' cười thích chí:*
"Hi hi hi, anh hông biết đó thôi, em quay ổng như cơm bữa mà không thì 'dễ hoá lười' liền thôi."
*'docco' có vẻ bồn chồn với những đối thoại thuộc dạng chit chat, cu cậu xen vào:*
"E hèm... hơi bị... lạc đề á. Anh già ơi, cho em hỏi thêm cái này nha? Có bao nhiêu cách để xác định footprint vậy anh? Em đọc sách thấy có khá nhiều công cụ, vậy theo anh mình nên dùng cái nào?"
*Tôi đáp:*
"Anh không thể nói rõ có bao nhiêu
**cách**vì anh không biết thật sự có bao nhiêu cách. Cái này tùy vào tính linh động và khả năng sáng tạo thôi em. Anh cũng không thể trả lời em là nên dùng công cụ nào. Chỉ có chính em tự tay dùng rồi chọn lấy một hoặc nhiều công cụ em thích mà thôi. Có những công cụ 'gom' luôn các công đoạn xác định hệ điều hành, xác định các dịch vụ đang chạy (open ports) thậm chí lấy luôn cả phiên bản của software cung cấp dịch vụ. Tuy nhiên, công cụ nào cũng có ưu khuyết điểm cả. Ví dụ **nmap**là một port scanner rất độc đáo, nó có thể thực hiện ba điều ở trên cùng một lúc nhưng nếu dùng không đúng mức thì nó sẽ rất 'ồn ào' vì nó không những 'active' mà 'extremely active'. Những hệ thống có trang bị IDS, IPS sẽ phát hiện ngay là có nmap đang dò dẫm và đây là điều bất lợi cho việc thăm dò." *'docco' phát biểu:*
"À, vậy nmap là công cụ thuộc dạng 'active' rồi. Em phải ghi nhớ chuyện này."
*Tôi cười, nói:*
"Không hẳn là như vậy đâu em. Anh nói là
**nếu dùng không đúng mức thì nó sẽ rất 'ồn ào'**cơ mà. Nếu em dùng nó đúng mức, nó không còn 'extremely active' nữa. Nó không phải 'passive' nhưng cũng không hẳn là 'active' bởi vì em không tạo ra nhiều 'tiếng ồn' trong khi rà (nếu dùng đúng mức)." *'cuti' cảm thán:*
"Chẹp... chỉ có chuyện 'rà' không mà cũng lắm nguyên tắc và công phu đến thế. Chắc lại phải học thêm nmap roài."
*Tôi đáp:*
"Em có vẻ bồn chồn với chuyện làm quen với những công cụ mới hay sao vậy Hưng? người ta viết hàng ngàn dòng code, xây dựng hàng trăm signature, viết manual sẵn. Em chỉ có việc đọc và dùng mà còn rên rỉ sao em? Kiểu này bắt đầu nguy rồi đó."
*'cuti' đính chính lia lịa:*
"Hông, hông có đâu anh. Em thức sáng đêm để quậy còn được mà. Ý em sau mỗi lần nói chuyện với anh là có thêm hàng loạt thông tin mới, cả đống công cụ mới để thử, để làm quen. Em cảm thấy có một phần sức ép nào đó để đuổi bắt với thông tin anh đưa ra thôi anh."
*Tôi cười:*
"Hì hì, vậy em còn muốn 'hack' không? Anh cũng cảm thấy điều đó nên mấy anh em mình 'đà khía' ít thường xuyên hơn là thế. Em không nên nghĩ và tự tạo sức ép cho mình là phải thông thạo, phải nắm vững các thông tin mới mẻ ngay lập tức. Từ từ, thong thả thôi em."
*'docco' hỏi tiếp:*
"Hồi nãy anh nói đến vấn đề 'ồn', ồn ở đây là những dấu hiệu mà hệ thống phát hiện phải không anh?"
*Tôi đáp:*
"Đúng rồi đó em. 'Ồn' ở đây chính là những thông tin được ghi nhận trong các log files của hệ thống hay các hệ thống phát hiện gần như 'real time' như IDS/IPS đó. Mỗi dạng thăm dò thường có tính chất đặc thù và những đặc thù đó được ghi nhận trên các hệ thống phòng thủ, còn gọi là 'signature'. Nếu admin của hệ thống ấy bất thình lình thấy có hàng loạt cú 'rà' trên hệ thống của mình thì coi như mục đích thăm dò và thâm nhập của ai đó bị hỏng. Nếu admin không nhận thấy những dấu hiệu này mà IDS/IPS nhận thấy thì tình hình cũng chẳng khác gì mấy. Không riêng gì nmap mà tất cả các software em dùng, cái nào cũng 'ồn' cả thôi. Chỉ có cái khác là em 'thấy' hay 'không thấy' được cái 'ồn' đó thôi :). Để rà một máy con của một người đang duyệt web thì chẳng phải lo mấy đến cái 'ồn' cả vì họ hiếm khi 'thấy' được sự 'ồn' đó. Tuy nhiên, để rà và thăm dò một máy chủ, một mục tiêu
**đáng**để thâm nhập hay đáng để bảo vệ thì mỗi chi tiết 'ồn' đều là dấu hiệu quan trọng." *'ccxx' thắc mắc:*
"Để khỏi bị 'ồn', mình không cần thăm dò kỹ mà chỉ tấn công thẳng vào dịch vụ web thì sao anh?"
*Tôi cười, đáp:*
"Thì mình nắm phần thất bại nhiều hơn là thành công 'công chúa xinh đẹp' ạ."
*'ccxx' phụng phịu:*
"Ứ ừ, em hỏi thật mà anh cứ đùa hoài."
*Tôi cười phá lên và tiếp tục:*
"Á à, anh trả lời thật mà em cứ ngỡ anh đùa hoài. Mình tấn công thẳng vào dịch vụ web là tấn công thế nào em? Mình không nắm được nó mạnh, yếu chỗ nào thì mình chỉ 'đấm đá' kiểu 'bịt mắt' thôi thì có trúng trật vào đâu nào? Cái này cũng giống như trường hợp 'ping of death' anh nói hồi nãy thôi em. Nó cũng giống như muốn đục cánh cửa sắt của két tiền mà cứ dùng dùi đục bằng gỗ mà phang vào cửa sắt thì chừng nào thủng được cái tủ? :)"
*'ccxx' giả lã:*
"Hi hi, anh già vui tính ghê. Chắc em hỏi hơi ngớ ngẩn thật đa. Lần sau em sẽ uốn lưỡi 7 lần trước khi hỏi cho chắc ăn."
*Tôi đáp:*
"Không em, em cứ nói chuyện thoải mái. Có bất cứ ý nghĩ nào nảy ra trong đầu cứ phát biểu. Chuyện đúng, sai, ngớ ngẩn không quan trọng mà quan trọng ở chỗ em rút tỉa được những gì trước và sau khi đưa ra câu hỏi. Nếu em e dè quá thì cuộc đối thoại của mấy anh em mình sẽ 'khô' như rơm thôi."
*'ccxx' trả lời:*
"Dạ. Em cứ thế mà phang, anh chuẩn bị tinh thần đó nha."
*'docco' xen vào:*
"Không biết em nhận xét những cái này có đúng hông, anh xem thử nha. Ví dụ muốn khám phá các chi tiết thuộc về domain name của một host nào đó, mình có thể dùng một công cụ online để xem mà không cần tiếp xúc trực tiếp từ máy của mình đến DNS server của mục tiêu. Cái này gọi là thăm dò ở dạng 'passive' phải không anh?"
*Tôi đáp:*
"Đúng lắm. Nó hoàn toàn 'passive' bởi vì em chỉ 'query' thông tin một domain, một host nào đó trên một DNS database công cộng. Có thể DNS em đang query sẽ liên hệ với authoritative DNS server của mục tiêu em đang thăm dò để lấy thông tin, cũng có thể là không vì nó dùng thông tin có sẵn trong cache không chừng. Dù gì đi chăng nữa, đây vẫn là dạng 'passive' bởi vì admin cũng như hệ thống IDS của mục tiêu em muốn thăm dò đều không có cách gì biết được em đang thăm dò. Những thông tin này thường ở dạng tổng quát và dành cho công cộng. Nó cũng có ích để xác định một số điều. Tuy nhiên, để thăm dò DNS và hình thành cấu trúc mạng của mục tiêu, đôi khi em phải chuyển sang dạng thăm dò 'active'."
*'docco' hỏi tiếp:*
"Anh ví dụ một kiểu thăm dò DNS ở dạng 'active' được không anh?"
*Tôi trả lời:*
"Được chớ em. Thông thường, em dùng
**nslookup**trên windows chẳng hạn, thì thế này: **C:>\> nslookup <server.domain.com>**
Cách này query dùng default DNS server chính là DNS server nào em khai báo trên máy dùng để phân giải tên miền. DNS server này có thể là DNS riêng do em tạo ra hoặc DNS server do ISP cung cấp. Ở dạng đó, những điều được query cũng chỉ là những thông tin dành cho công cộng mà thôi (cái này còn tùy thuộc vào sự chặt chẽ của người thiết kế DNS, có những DNS chứa cả thông tin dàng cho công cộng lẫn thông tin dành riêng cho nội mạng và đây là điều nên tránh). Tuy nhiên, nếu em 'chịu khó' hơn một tí, thử như sau:
**C:\> nslookup**
> set type=ns
> domain.com
Server: [172.16.114.163]
Address: 172.16.114.163
domain.com nameserver = ns1.domain.com
domain.com nameserver = ns2.domain.com
ns1.domain.com internet address = 172.16.114.163
ns2.domain.com internet address = 172.17.124.174
> server ns1.domain.com
> ls -d domain.com
[[172.16.114.163]]
domain.com. SOA ns1.domain.com hostmaster.domain.com. (1098357511 16384 2048 1048576 2560)
domain.com. NS ns1.domain.com
domain.com. NS ns2.domain.com
domain.com. MX 0 mail.domain.com
www A 172.16.114.160
white A 172.16.114.161
mail A 172.16.114.162
ns1 A 172.16.114.163
ns2 A 172.17.124.174
domain.com. A 172.16.114.160
blue A 172.16.114.163
red A 172.17.124.174
domain.com. TXT "v=spf1 a mx ptr -all"
mail TXT "v=spf1 a -all"
domain.com. SOA ns1.domain.com hostmaster.domain.com. (1098357511 16384 2048 1048576 2560)
> set type=ns
> domain.com
Server: [172.16.114.163]
Address: 172.16.114.163
domain.com nameserver = ns1.domain.com
domain.com nameserver = ns2.domain.com
ns1.domain.com internet address = 172.16.114.163
ns2.domain.com internet address = 172.17.124.174
> server ns1.domain.com
> ls -d domain.com
[[172.16.114.163]]
domain.com. SOA ns1.domain.com hostmaster.domain.com. (1098357511 16384 2048 1048576 2560)
domain.com. NS ns1.domain.com
domain.com. NS ns2.domain.com
domain.com. MX 0 mail.domain.com
www A 172.16.114.160
white A 172.16.114.161
mail A 172.16.114.162
ns1 A 172.16.114.163
ns2 A 172.17.124.174
domain.com. A 172.16.114.160
blue A 172.16.114.163
red A 172.17.124.174
domain.com. TXT "v=spf1 a mx ptr -all"
mail TXT "v=spf1 a -all"
domain.com. SOA ns1.domain.com hostmaster.domain.com. (1098357511 16384 2048 1048576 2560)
Có gì đặc biệt ở đây vậy em?"
*'docco' ngần ngừ:*
"Ùm... à.... hình như anh cố tình dùng chính DNS của chính mục tiêu để query phải không anh?"
*Tôi đáp:*
"Bravo! Đúng như thế, nó nằm ở đây:
**.**
> server ns1.domain.com
> ls -d domain.com
> server ns1.domain.com
> ls -d domain.com
Em biết lý do tại sao không? Ngày nay, hầu hết các authoritative DNS đều không cho 'zone transfer' một cách rộng rãi nữa vì quá nguy hại. Tuy nhiên, vẫn có các DNS server cho phép những DNS server được 'tin cậy' thực hiện 'zone transfer'. Bởi thế, mình mới 'láu cá' bằng cách mượn tay DNS server được 'tin cậy' để query thông tin cho mình :). Nên nhớ là có những DNS server (primary và secondary) hiện nay không còn cho phép thực hiện bước ở trên nữa vì họ không cho 'zone transfer' ngay cả giữa primary và secondary."
*'cuti' thắc mắc:*
"Query DNS có gì mà quan trọng đến thế hở anh? Nãy giờ em ráng theo dõi nhưng bắt đầu bị ù ù cạc cạc rồi đó. Có nhiều thông tin hoàn toàn mới mẻ đối với em cho nên tóm gọn lại, em không rõ tại sao phải thu thập những thông tin này và để có thể thu thập thông tin thì phải nắm bao nhiêu là kiến thức :("
*'ccxx' xen vào:*
"Trong khi anh nói, em cũng thử và thấy quả thật mình có thể thâu thập khá nhiều thông tin qua DNS. Có khi query được, có khi không. Hình như mình có thể xác định một cách tổng quát có bao nhiêu servers trong mô hình mạng mình muốn thăm dò. Em chưa rõ bước kế tiếp thế nào nhưng em hình dung mình sẽ làm gì đó với những thông tin thu thập được. Có thể dùng để phác thảo một mô hình mạng chăng?"
*Tôi cười, đáp:*
"Công chúa nhận xét đúng lắm. Tất nhiên là mọi thông tin đều cần thiết cả, nếu không mình mất thời gian với chúng làm gì? Để hình thành mô hình mạng của mục tiêu mình muốn thăm dò, việc thăm dò DNS chỉ cung cấp một phần thông tin mà thôi. Em cần phải kết hợp với một số thông tin khác nữa. Cái này mình sẽ bàn sau. Anh lấy ví dụ đơn giản thế này nha. Giả sử em muốn tấn công một host X nhưng host này 'thủ' chặt quá. Thông thường thì em bó tay và bỏ cuộc. Tuy nhiên, nếu em thăm dò rộng ra (bằng cách hình thành mô hình mạng) thì thấy rằng host X nằm trong một nhóm host khác và một vài host ấy có thể thâm nhập được. Nếu thâm nhập được một trong các host này thì cơ hội 'nhảy' sang host X thành công cao hơn.
Cho dù em không thể thâm nhập bất cứ host nào đi chăng nữa nhưng qua thông tin dò xét và thu thập được trong quá trình recconnaissance, em có thể đi đến kết luận là nên tiếp tục hay nên bỏ cuộc (để đỡ tốn thời gian). Nếu thấy mô hình mạng chặt chẽ quá, thấy có firewall vững vàng, cách tốt nhất là bỏ cuộc để đỡ mất thời gian. Thật ra, nếu đã thông thạo thì việc dò tìm thông tin xuyên qua DNS không mất quá nhiều thời gian đâu. Đây chỉ là một bước rất nhỏ trong quá trình thăm dò. Vấn đề mình bàn ở đây là để nhấn mạnh một điều quan trọng: tìm thông tin có
**rất nhiều cách**, cách nào nhanh nhất, có thông tin cụ thể nhất thì đó là cách thích hợp nhất." *'docco' cảm thán:*
"Không ngờ bên trong recconnaissance đã có những điều lý thú đến như thế. Em định hỏi thêm anh một số chi tiết về kết quả lấy được ở trên nhưng chợt nhớ
**ask me why, don't ask me what**nên em đã ghi chú một loạt thông tin mà em cần phải tìm hiểu chi tiết sau. Cũng như Hưng, em bắt đầu thấy lùng bùng rồi đó anh. Như anh nói, vậy là recconnaissance cũng sẽ dính với chuyện dò dẫm cả firewall luôn sao anh? và đối với người phòng thủ thì nên làm thế nào? Về việc anh đề cập tới host X ở trên, hình như anh muốn nói đến khía cạnh kiện toàn bảo mật?" *Tôi trả lời:*
"Chuyện dò dẫm firewall là chuyện không thể thiếu nếu như firewall nằm trên đường thâm nhập rồi đó em. Thong thả rồi mình sẽ bàn các chi tiết này sau, không thì em càng lùng bùng nữa. Chuyện phòng thủ thì mình cũng sẽ bàn sau khi em đã 'thông' những chi tiết mình vừa 'đà khía'. Nên nhớ rằng, 'thủ' ở đây là thực sự phòng thủ chớ không phải là những kỹ thuật nho nhỏ dùng để dấu footprint không thôi nha. Mình sẽ đào sâu từ từ những chuyện này (nếu bọn em còn hứng thú ;-) )."
*'cuti' lên tiếng ngay lập tức:*
"Làm sao mà không còn hứng thú được anh? Những thông tin này là tổng hợp của bao nhiêu điều lý thú. Chắc em sẽ không bao giờ thâm nhập ai nhưng những kiến thức này chắc sẽ ích lợi trong công việc về sau. Anh đừng lo tụi em hết hứng thú :)"
*'docco' cũng chêm thêm:*
"Hay là anh .... nản thì có. Nói chuyện với bọn em cái gì anh cũng phải giải thích. Gặp em, chắc em nản từ lâu rồi."
*Tôi đáp:*
"Hì hì, nản hả? có gì mà nản em? Thỉnh thoảng vào 'đà khía' thế này vui mà. Thôi, anh phải logoff đây. Ngồi dính một chỗ lâu quá rồi. Anh vẫn còn ở nhà vài ngày tới, trưa trưa anh sẽ vào check mail mỗi ngày, đứa nào muốn 'đà khía' thì offline message cho anh một cái ha."
*'ccxx' cười, pha trò:*
"Í cha, anh già rút... đẹp thiệt à nha. Ảnh rào câu áp chót, chuyển qua câu chót là bye bye liền :). Mai em cũng rảnh á, em sẽ online chờ anh."
*'cuti' hùa theo:*
"Em cũng vậy."
*'docco' thận trọng:*
"Nếu không có gì đột xuất, em cũng sẽ online luôn."
*Tôi đáp:*
"Ừa, cũng khoảng giờ này hoặc sớm hơn vào ngày mai hả? Chào mấy đứa."
26/9/2005
<còn tiếp>

Server: GSE