Mô tả
Học cách sử dụng những tools cơ bản như traceroute, ping, telnet và web browser để trinh sát thông tin

Task
Task 1: Introduction
Trong phòng đầu tiên của Mô-đun An ninh Mạng, chúng ta tập trung vào trinh sát thụ động. Trong phòng thứ hai này, chúng ta tập trung vào trinh sát chủ động và các công cụ thiết yếu liên quan. Chúng ta học cách sử dụng trình duyệt web để thu thập thêm thông tin về mục tiêu. Ngoài ra, chúng ta thảo luận về việc sử dụng các công cụ đơn giản như ping, traceroute, telnet và nc để thu thập thông tin về mạng, hệ thống và dịch vụ.
Như chúng ta đã học ở phòng trước, trinh sát thụ động cho phép bạn thu thập thông tin về mục tiêu mà không cần bất kỳ sự tương tác hay kết nối trực tiếp nào. Bạn đang quan sát từ xa hoặc kiểm tra thông tin công khai sẵn có.

Trinh sát chủ động yêu cầu bạn phải có một hình thức liên hệ nào đó với mục tiêu. Sự liên hệ này có thể là một cuộc gọi điện thoại hoặc ghé thăm công ty mục tiêu dưới một lý do nào đó để thu thập thêm thông tin, thường là một phần của kỹ nghệ xã hội. Ngoài ra, nó có thể là một kết nối trực tiếp tới hệ thống mục tiêu, chẳng hạn truy cập trang web của họ hoặc kiểm tra xem tường lửa của họ có mở cổng SSH hay không. Hãy hình dung nó như việc bạn đang kiểm tra kỹ các cửa sổ và ổ khóa cửa. Do đó, điều tối quan trọng là phải nhớ không thực hiện công việc trinh sát chủ động trước khi nhận được sự cho phép hợp pháp có chữ ký từ khách hàng.

Trong phòng này, chúng ta tập trung vào trinh sát chủ động. Trinh sát chủ động bắt đầu bằng các kết nối trực tiếp được thực hiện tới máy mục tiêu. Bất kỳ kết nối nào như vậy có thể để lại thông tin trong nhật ký, hiển thị địa chỉ IP của máy khách, thời gian kết nối và thời lượng kết nối, cùng những thứ khác. Tuy nhiên, không phải mọi kết nối đều đáng ngờ. Bạn có thể khiến hoạt động trinh sát chủ động của mình trông giống như hoạt động bình thường của khách hàng. Hãy xem việc duyệt web; không ai nghi ngờ một trình duyệt kết nối tới máy chủ web mục tiêu giữa hàng trăm người dùng hợp lệ khác. Bạn có thể tận dụng các kỹ thuật như vậy khi làm việc trong đội đỏ (kẻ tấn công) và không muốn báo động cho đội xanh (người phòng thủ).
Trong phòng này, chúng ta sẽ đi qua nhiều công cụ thường được tích hợp trong hầu hết các hệ điều hành hoặc dễ dàng có được. Chúng ta bắt đầu với trình duyệt web và các công cụ nhà phát triển tích hợp sẵn; hơn nữa, chúng tôi sẽ chỉ cho bạn cách một trình duyệt web có thể được “vũ trang” để trở thành một khung trinh sát hiệu quả. Sau đó, chúng ta thảo luận về các công cụ vô hại khác như ping, traceroute và telnet. Tất cả các chương trình này đều yêu cầu kết nối tới mục tiêu, do đó các hoạt động của chúng ta sẽ thuộc phạm trù trinh sát chủ động.
Phòng này sẽ hữu ích cho bất kỳ ai muốn làm quen với các công cụ thiết yếu và xem cách họ có thể sử dụng chúng trong trinh sát chủ động. Các công cụ nhà phát triển của trình duyệt web có thể cần một chút công sức để làm quen, mặc dù chúng cung cấp giao diện đồ họa. Các công cụ dòng lệnh được đề cập tương đối dễ sử dụng.
Thông báo Quan trọng: Xin lưu ý rằng nếu bạn không đăng ký, AttackBox sẽ không có quyền truy cập Internet, vì vậy bạn sẽ cần sử dụng VPN để hoàn thành các câu hỏi yêu cầu truy cập Internet.
Trả lời các câu hỏi bên dưới
- Hãy đảm bảo rằng bạn hiểu vì sao các công cụ này thuộc trinh sát chủ động. Khởi chạy AttackBox của bạn và đảm bảo rằng nó đã sẵn sàng. Bạn sẽ cần nó để trả lời các câu hỏi, đặc biệt ở các tác vụ sau.
Task 2: Web Browser
Trình duyệt web có thể là một công cụ tiện lợi, đặc biệt vì nó có sẵn trên mọi hệ thống. Có một số cách bạn có thể sử dụng trình duyệt web để thu thập thông tin về một mục tiêu.
Ở tầng truyền tải, trình duyệt kết nối tới:
- TCP port 80 theo mặc định khi trang web được truy cập qua HTTP
- TCP port 443 theo mặc định khi trang web được truy cập qua HTTPS
Vì 80 và 443 là các cổng mặc định cho HTTP và HTTPS, trình duyệt web không hiển thị chúng trên thanh địa chỉ. Tuy nhiên, có thể sử dụng các cổng tùy chỉnh để truy cập một dịch vụ. Ví dụ, https://127.0.0.1:8834/ sẽ kết nối tới 127.0.0.1 (localhost) tại cổng 8834 qua giao thức HTTPS. Nếu có một máy chủ HTTPS đang lắng nghe trên cổng đó, chúng ta sẽ nhận được một trang web.
Khi duyệt một trang web, bạn có thể nhấn Ctrl+Shift+I trên PC hoặc Option + Command + I (⌥ + ⌘ + I) trên Mac để mở Developer Tools trên Firefox. Các phím tắt tương tự cũng sẽ giúp bạn bắt đầu với Google Chrome hoặc Chromium. Developer Tools cho phép bạn kiểm tra nhiều thứ mà trình duyệt đã nhận và trao đổi với máy chủ từ xa. Ví dụ, bạn có thể xem và thậm chí chỉnh sửa các tệp JavaScript (JS), kiểm tra các cookie được đặt trên hệ thống của bạn và khám phá cấu trúc thư mục của nội dung trang web.
Bên dưới là ảnh chụp màn hình của Firefox Developer Tools. Chrome DevTools khá giống.

Cũng có rất nhiều tiện ích bổ sung cho Firefox và Chrome có thể giúp ích trong kiểm thử thâm nhập. Dưới đây là một vài ví dụ:
- FoxyProxy cho phép bạn nhanh chóng thay đổi máy chủ proxy mà bạn đang dùng để truy cập trang web mục tiêu. Tiện ích mở rộng trình duyệt này rất tiện lợi khi bạn sử dụng một công cụ như Burp Suite hoặc nếu bạn cần chuyển đổi máy chủ proxy thường xuyên. Bạn có thể tải FoxyProxy cho Firefox từ đây.
- User-Agent Switcher and Manager cho bạn khả năng giả vờ truy cập trang web từ một hệ điều hành khác hoặc một trình duyệt web khác. Nói cách khác, bạn có thể giả vờ đang duyệt một trang bằng iPhone trong khi thực tế bạn đang truy cập từ Mozilla Firefox. Bạn có thể tải User-Agent Switcher and Manager cho Firefox tại đây.
- Wappalyzer cung cấp cái nhìn sâu về các công nghệ được sử dụng trên các trang web đã truy cập. Tiện ích mở rộng như vậy rất hữu ích, đặc biệt khi bạn thu thập tất cả thông tin này trong khi duyệt trang web như bất kỳ người dùng nào khác. Ảnh chụp màn hình của Wappalyzer được hiển thị bên dưới. Bạn có thể tìm Wappalyzer cho Firefox tại đây.

Theo thời gian, bạn có thể tìm thấy một vài tiện ích mở rộng phù hợp hoàn hảo với quy trình làm việc của mình.
Trả lời các câu hỏi bên dưới
- Duyệt đến trang web sau và đảm bảo rằng bạn đã mở Developer Tools trên AttackBox Firefox, hoặc trình duyệt trên máy tính của bạn. Sử dụng Developer Tools, xác định tổng số câu hỏi.8

Task 3: Ping
Ping nên gợi bạn nhớ đến trò chơi bóng bàn (ping-pong). Bạn ném quả bóng đi và mong nhận lại. Mục đích chính của ping là kiểm tra liệu bạn có thể tiếp cận hệ thống từ xa và hệ thống từ xa có thể phản hồi lại bạn hay không. Nói cách khác, ban đầu nó được dùng để kiểm tra kết nối mạng; tuy nhiên, chúng ta quan tâm nhiều hơn đến các cách sử dụng khác của nó: kiểm tra liệu hệ thống từ xa có đang trực tuyến hay không.
Nói đơn giản, lệnh ping sẽ gửi một gói tin tới hệ thống từ xa, và hệ thống từ xa sẽ trả lời. Bằng cách này, bạn có thể kết luận rằng hệ thống từ xa đang trực tuyến và mạng giữa hai hệ thống đang hoạt động.
Nếu bạn thích một định nghĩa khắt khe hơn, ping là một lệnh gửi một gói ICMP Echo tới hệ thống từ xa. Nếu hệ thống từ xa trực tuyến, và gói ping được định tuyến đúng cách và không bị bất kỳ tường lửa nào chặn, hệ thống từ xa sẽ gửi lại một ICMP Echo Reply. Tương tự, phản hồi ping cũng phải đến được hệ thống đầu tiên nếu được định tuyến đúng cách và không bị bất kỳ tường lửa nào chặn.
Mục tiêu của lệnh như vậy là đảm bảo rằng hệ thống mục tiêu trực tuyến trước khi chúng ta dành thời gian thực hiện các lượt quét chi tiết hơn để khám phá hệ điều hành và các dịch vụ đang chạy.
Trên terminal AttackBox của bạn, bạn có thể bắt đầu sử dụng ping dưới dạng ping MACHINE_IP hoặc ping HOSTNAME. Ở trường hợp sau, hệ thống cần phân giải HOSTNAME thành một địa chỉ IP trước khi gửi gói ping. Nếu bạn không chỉ định số lượng gói trên hệ thống Linux, bạn sẽ cần nhấn CTRL+c để buộc nó dừng. Do đó, bạn có thể cân nhắc ping -c 10 MACHINE_IP nếu bạn chỉ muốn gửi mười gói. Điều này tương đương với ping -n 10 MACHINE_IP trên hệ thống MS Windows.
Về mặt kỹ thuật, ping thuộc giao thức ICMP (Internet Control Message Protocol). ICMP hỗ trợ nhiều loại truy vấn, nhưng cụ thể, chúng ta quan tâm đến ping (ICMP echo/loại 8) và ping reply (ICMP echo reply/loại 0). Không cần đi sâu vào chi tiết ICMP để sử dụng ping.
Trong ví dụ sau, chúng ta đã chỉ định tổng số gói là 5. Từ terminal của AttackBox, chúng ta bắt đầu ping tới MACHINE_IP. Chúng ta biết rằng MACHINE_IP đang hoạt động và không chặn các yêu cầu ICMP echo. Hơn nữa, bất kỳ tường lửa và bộ định tuyến nào trên tuyến đường của gói tin cũng không chặn các yêu cầu ICMP echo.
AttackBox Terminal
user@AttackBox$ ping -c 5 MACHINE_IP
PING MACHINE_IP (MACHINE_IP) 56(84) bytes of data.
64 bytes from MACHINE_IP: icmp_seq=1 ttl=64 time=0.636 ms
64 bytes from MACHINE_IP: icmp_seq=2 ttl=64 time=0.483 ms
64 bytes from MACHINE_IP: icmp_seq=3 ttl=64 time=0.396 ms
64 bytes from MACHINE_IP: icmp_seq=4 ttl=64 time=0.416 ms
64 bytes from MACHINE_IP: icmp_seq=5 ttl=64 time=0.445 ms
--- MACHINE_IP ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4097ms
rtt min/avg/max/mdev = 0.396/0.475/0.636/0.086 ms
Trong ví dụ trên, chúng ta thấy rõ rằng hệ thống mục tiêu đang phản hồi. Kết quả ping là một chỉ báo cho thấy nó đang trực tuyến và có thể truy cập được. Chúng ta đã truyền năm gói, và nhận được năm phản hồi. Chúng ta nhận thấy rằng, trung bình, mất 0,475 ms (mili giây) để phản hồi đến hệ thống của chúng ta, với giá trị lớn nhất là 0,636 ms.
Từ góc độ kiểm thử thâm nhập, chúng ta sẽ cố gắng khám phá thêm về mục tiêu này. Chúng ta sẽ cố gắng tìm hiểu càng nhiều càng tốt, ví dụ như cổng nào mở và dịch vụ nào đang chạy.
Hãy xem xét trường hợp sau: chúng ta tắt máy ảo mục tiêu và sau đó cố gắng ping tới MACHINE_IP. Như bạn mong đợi trong ví dụ sau, chúng ta không nhận được bất kỳ phản hồi nào.
AttackBox Terminal
user@AttackBox$ ping -c 5 MACHINE_IP
PING MACHINE_IP (MACHINE_IP) 56(84) bytes of data.
From ATTACKBOX_IP icmp_seq=1 Destination Host Unreachable
From ATTACKBOX_IP icmp_seq=2 Destination Host Unreachable
From ATTACKBOX_IP icmp_seq=3 Destination Host Unreachable
From ATTACKBOX_IP icmp_seq=4 Destination Host Unreachable
From ATTACKBOX_IP icmp_seq=5 Destination Host Unreachable
--- MACHINE_IP ping statistics ---
5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4098ms
pipe 4
Trong trường hợp này, chúng ta đã biết rằng chúng ta đã tắt máy tính mục tiêu có MACHINE_IP. Với mỗi lần ping, hệ thống mà chúng ta đang sử dụng, trong trường hợp này là AttackBox, đang phản hồi “Destination Host Unreachable.” Chúng ta có thể thấy rằng chúng ta đã truyền năm gói, nhưng không gói nào được nhận, dẫn đến tỷ lệ mất gói 100%.
Nói chung, khi chúng ta không nhận được phản hồi ping, có một vài lời giải thích có thể giải thích tại sao chúng ta không nhận được phản hồi ping, ví dụ:
- Máy tính đích không phản hồi; có thể vẫn đang khởi động hoặc đã tắt, hoặc hệ điều hành đã bị treo.
- Nó bị rút khỏi mạng, hoặc có một thiết bị mạng bị lỗi trên đường truyền.
- Một tường lửa được cấu hình để chặn các gói như vậy. Tường lửa có thể là một phần mềm chạy trên chính hệ thống hoặc một thiết bị mạng riêng biệt. Lưu ý rằng tường lửa MS Windows chặn ping theo mặc định.
- Hệ thống của bạn bị rút khỏi mạng.
Trả lời các câu hỏi bên dưới
- Bạn sẽ sử dụng tùy chọn nào để đặt kích thước dữ liệu được mang theo bởi ICMP echo request?-s
- Kích thước header ICMP là bao nhiêu byte?8
- Tường lửa MS Windows có chặn ping theo mặc định không? (Y/N)Y
- Triển khai VM cho tác vụ này và sử dụng terminal AttackBox, thực hiện lệnh ping -c 10 MACHINE_IP. Bạn nhận được bao nhiêu phản hồi ping?10
Task 4: Traceroute
Như tên gọi, lệnh traceroute truy vết lộ trình mà các gói tin đi từ hệ thống của bạn đến một máy chủ khác. Mục đích của traceroute là tìm các địa chỉ IP của những bộ định tuyến (router) hay các bước nhảy (hop) mà một gói tin đi qua khi nó từ hệ thống của bạn đến máy chủ đích. Lệnh này cũng tiết lộ số lượng bộ định tuyến giữa hai hệ thống. Nó hữu ích vì cho biết số bước nhảy (router) giữa hệ thống của bạn và máy chủ đích. Tuy nhiên, lưu ý rằng lộ trình mà các gói tin đi qua có thể thay đổi vì nhiều bộ định tuyến sử dụng các giao thức định tuyến động thích ứng với thay đổi của mạng.
Trên Linux và macOS, lệnh sử dụng là traceroute 10.201.14.10, và trên MS Windows, lệnh là tracert 10.201.14.10. traceroute cố gắng khám phá các bộ định tuyến trên đường đi từ hệ thống của bạn đến hệ thống mục tiêu.
Không có cách trực tiếp để khám phá đường đi từ hệ thống của bạn đến một hệ thống mục tiêu. Chúng ta dựa vào ICMP để “đánh lừa” các bộ định tuyến tiết lộ địa chỉ IP của chúng. Chúng ta có thể làm điều này bằng cách sử dụng giá trị Time To Live (TTL) nhỏ trong trường header IP. Mặc dù chữ T trong TTL là “time” (thời gian), TTL biểu thị số lượng tối đa các bộ định tuyến/bước nhảy mà một gói tin có thể đi qua trước khi bị loại bỏ; TTL không phải là số đơn vị thời gian tối đa. Khi một bộ định tuyến nhận được một gói tin, nó sẽ giảm TTL đi một trước khi chuyển tiếp đến bộ định tuyến tiếp theo. Hình dưới đây cho thấy mỗi khi gói IP đi qua một bộ định tuyến, giá trị TTL của nó bị giảm đi 1. Ban đầu, nó rời hệ thống với TTL bằng 64; nó đến hệ thống đích với TTL bằng 60 sau khi đi qua 4 bộ định tuyến.

Tuy nhiên, nếu TTL chạm 0, gói tin sẽ bị loại bỏ, và một ICMP Time-to-Live exceeded sẽ được gửi về cho người gửi ban đầu. Ở hình minh họa sau, hệ thống đặt TTL là 1 trước khi gửi đến bộ định tuyến. Bộ định tuyến đầu tiên trên đường đi giảm TTL đi 1, dẫn đến TTL bằng 0. Do đó, bộ định tuyến này sẽ loại bỏ gói tin và gửi một thông điệp lỗi ICMP time exceeded in-transit. Lưu ý rằng một số bộ định tuyến được cấu hình không gửi các thông điệp ICMP như vậy khi loại bỏ gói tin.

Trên Linux, traceroute sẽ bắt đầu bằng cách gửi các datagram UDP trong các gói IP có TTL bằng 1. Như vậy, nó khiến bộ định tuyến đầu tiên gặp TTL=0 và gửi lại một ICMP Time-to-Live exceeded. Do đó, TTL bằng 1 sẽ tiết lộ địa chỉ IP của bộ định tuyến đầu tiên cho bạn. Sau đó, nó sẽ gửi một gói khác với TTL=2; gói này sẽ bị loại bỏ ở bộ định tuyến thứ hai. Cứ như vậy. Hãy thử điều này trên các hệ thống thực.
Trong các ví dụ sau, chúng ta chạy cùng một lệnh, traceroute tryhackme.com từ AttackBox của TryHackMe. Chúng ta nhận thấy rằng các lần chạy khác nhau có thể dẫn đến các lộ trình khác nhau mà các gói tin đi theo.
Traceroute A
AttackBox Terminal - Traceroute A
user@AttackBox$ traceroute tryhackme.com
traceroute to tryhackme.com (172.67.69.208), 30 hops max, 60 byte packets
1 ec2-3-248-240-5.eu-west-1.compute.amazonaws.com (3.248.240.5) 2.663 ms * ec2-3-248-240-13.eu-west-1.compute.amazonaws.com (3.248.240.13) 7.468 ms
2 100.66.8.86 (100.66.8.86) 43.231 ms 100.65.21.64 (100.65.21.64) 18.886 ms 100.65.22.160 (100.65.22.160) 14.556 ms
3 * 100.66.16.176 (100.66.16.176) 8.006 ms *
4 100.66.11.34 (100.66.11.34) 17.401 ms 100.66.10.14 (100.66.10.14) 23.614 ms 100.66.19.236 (100.66.19.236) 17.524 ms
5 100.66.7.35 (100.66.7.35) 12.808 ms 100.66.6.109 (100.66.6.109) 14.791 ms *
6 100.65.14.131 (100.65.14.131) 1.026 ms 100.66.5.189 (100.66.5.189) 19.246 ms 100.66.5.243 (100.66.5.243) 19.805 ms
7 100.65.13.143 (100.65.13.143) 14.254 ms 100.95.18.131 (100.95.18.131) 0.944 ms 100.95.18.129 (100.95.18.129) 0.778 ms
8 100.95.2.143 (100.95.2.143) 0.680 ms 100.100.4.46 (100.100.4.46) 1.392 ms 100.95.18.143 (100.95.18.143) 0.878 ms
9 100.100.20.76 (100.100.20.76) 7.819 ms 100.92.11.36 (100.92.11.36) 18.669 ms 100.100.20.26 (100.100.20.26) 0.842 ms
10 100.92.11.112 (100.92.11.112) 17.852 ms * 100.92.11.158 (100.92.11.158) 16.687 ms
11 100.92.211.82 (100.92.211.82) 19.713 ms 100.92.0.126 (100.92.0.126) 18.603 ms 52.93.112.182 (52.93.112.182) 17.738 ms
12 99.83.69.207 (99.83.69.207) 17.603 ms 15.827 ms 17.351 ms
13 100.92.9.83 (100.92.9.83) 17.894 ms 100.92.79.136 (100.92.79.136) 21.250 ms 100.92.9.118 (100.92.9.118) 18.166 ms
14 172.67.69.208 (172.67.69.208) 17.976 ms 16.945 ms 100.92.9.3 (100.92.9.3) 17.709 ms
Trong đầu ra traceroute ở trên, chúng ta có 14 dòng được đánh số; mỗi dòng đại diện cho một bộ định tuyến/bước nhảy. Hệ thống của chúng ta gửi ba gói với TTL đặt là 1, sau đó ba gói với TTL đặt là 2, và cứ thế. Tùy thuộc vào cấu trúc liên kết mạng, chúng ta có thể nhận phản hồi từ tối đa 3 bộ định tuyến khác nhau, tùy thuộc vào lộ trình mà gói tin đi theo. Xét dòng số 12, bộ định tuyến thứ mười hai với địa chỉ IP liệt kê đã loại bỏ gói tin ba lần và gửi một thông điệp ICMP time exceeded in-transit. Dòng 12 99.83.69.207 (99.83.69.207) 17.603 ms 15.827 ms 17.351 ms cho thấy thời gian tính bằng mili giây để mỗi phản hồi đến hệ thống của chúng ta.
Mặt khác, chúng ta có thể thấy rằng chúng ta chỉ nhận một phản hồi ở dòng thứ ba. Hai dấu sao trong đầu ra 3 * 100.66.16.176 (100.66.16.176) 8.006 ms * cho biết hệ thống của chúng ta đã không nhận được hai thông điệp ICMP time exceeded in-transit dự kiến.
Cuối cùng, ở dòng đầu tiên của đầu ra, chúng ta có thể thấy rằng các gói rời AttackBox theo những lộ trình khác nhau. Chúng ta có thể thấy hai bộ định tuyến đã phản hồi với TTL bằng một. Hệ thống của chúng ta không bao giờ nhận được thông điệp ICMP thứ ba như dự kiến.
Traceroute B
AttackBox Terminal - Traceroute B
user@AttackBox$ traceroute tryhackme.com
traceroute to tryhackme.com (104.26.11.229), 30 hops max, 60 byte packets
1 ec2-79-125-1-9.eu-west-1.compute.amazonaws.com (79.125.1.9) 1.475 ms * ec2-3-248-240-31.eu-west-1.compute.amazonaws.com (3.248.240.31) 9.456 ms
2 100.65.20.160 (100.65.20.160) 16.575 ms 100.66.8.226 (100.66.8.226) 23.241 ms 100.65.23.192 (100.65.23.192) 22.267 ms
3 100.66.16.50 (100.66.16.50) 2.777 ms 100.66.11.34 (100.66.11.34) 22.288 ms 100.66.16.28 (100.66.16.28) 4.421 ms
4 100.66.6.47 (100.66.6.47) 17.264 ms 100.66.7.161 (100.66.7.161) 39.562 ms 100.66.10.198 (100.66.10.198) 15.958 ms
5 100.66.5.123 (100.66.5.123) 20.099 ms 100.66.7.239 (100.66.7.239) 19.253 ms 100.66.5.59 (100.66.5.59) 15.397 ms
6 * 100.66.5.223 (100.66.5.223) 16.172 ms 100.65.15.135 (100.65.15.135) 0.424 ms
7 100.65.12.135 (100.65.12.135) 0.390 ms 100.65.12.15 (100.65.12.15) 1.045 ms 100.65.14.15 (100.65.14.15) 1.036 ms
8 100.100.4.16 (100.100.4.16) 0.482 ms 100.100.20.122 (100.100.20.122) 0.795 ms 100.95.2.143 (100.95.2.143) 0.827 ms
9 100.100.20.86 (100.100.20.86) 0.442 ms 100.100.4.78 (100.100.4.78) 0.347 ms 100.100.20.20 (100.100.20.20) 1.388 ms
10 100.92.212.20 (100.92.212.20) 11.611 ms 100.92.11.54 (100.92.11.54) 12.675 ms 100.92.11.56 (100.92.11.56) 10.835 ms
11 100.92.6.52 (100.92.6.52) 11.427 ms 100.92.6.50 (100.92.6.50) 11.033 ms 100.92.210.50 (100.92.210.50) 10.551 ms
12 100.92.210.139 (100.92.210.139) 10.026 ms 100.92.6.13 (100.92.6.13) 14.586 ms 100.92.210.69 (100.92.210.69) 12.032 ms
13 100.92.79.12 (100.92.79.12) 12.011 ms 100.92.79.68 (100.92.79.68) 11.318 ms 100.92.80.84 (100.92.80.84) 10.496 ms
14 100.92.9.27 (100.92.9.27) 11.354 ms 100.92.80.31 (100.92.80.31) 13.000 ms 52.93.135.125 (52.93.135.125) 11.412 ms
15 150.222.241.85 (150.222.241.85) 9.660 ms 52.93.135.81 (52.93.135.81) 10.941 ms 150.222.241.87 (150.222.241.87) 16.543 ms
16 100.92.228.102 (100.92.228.102) 15.168 ms 100.92.227.41 (100.92.227.41) 10.134 ms 100.92.227.52 (100.92.227.52) 11.756 ms
17 100.92.232.111 (100.92.232.111) 10.589 ms 100.92.231.69 (100.92.231.69) 16.664 ms 100.92.232.37 (100.92.232.37) 13.089 ms
18 100.91.205.140 (100.91.205.140) 11.551 ms 100.91.201.62 (100.91.201.62) 10.246 ms 100.91.201.36 (100.91.201.36) 11.368 ms
19 100.91.205.79 (100.91.205.79) 11.112 ms 100.91.205.83 (100.91.205.83) 11.040 ms 100.91.205.33 (100.91.205.33) 10.114 ms
20 100.91.211.45 (100.91.211.45) 9.486 ms 100.91.211.79 (100.91.211.79) 13.693 ms 100.91.211.47 (100.91.211.47) 13.619 ms
21 100.100.6.81 (100.100.6.81) 11.522 ms 100.100.68.70 (100.100.68.70) 10.181 ms 100.100.6.21 (100.100.6.21) 11.687 ms
22 100.100.65.131 (100.100.65.131) 10.371 ms 100.100.92.6 (100.100.92.6) 10.939 ms 100.100.65.70 (100.100.65.70) 23.703 ms
23 100.100.2.74 (100.100.2.74) 15.317 ms 100.100.66.17 (100.100.66.17) 11.492 ms 100.100.88.67 (100.100.88.67) 35.312 ms
24 100.100.16.16 (100.100.16.16) 19.155 ms 100.100.16.28 (100.100.16.28) 19.147 ms 100.100.2.68 (100.100.2.68) 13.718 ms
25 99.83.89.19 (99.83.89.19) 28.929 ms * 21.790 ms
26 104.26.11.229 (104.26.11.229) 11.070 ms 11.058 ms 11.982 ms
Trong lần chạy thứ hai của chương trình traceroute, chúng ta nhận thấy rằng các gói tin đã đi theo một lộ trình dài hơn lần này, đi qua 26 bộ định tuyến. Nếu bạn đang chạy traceroute đến một hệ thống trong mạng nội bộ của bạn, lộ trình sẽ ít có khả năng thay đổi. Tuy nhiên, chúng ta không thể kỳ vọng lộ trình luôn cố định khi các gói tin cần đi qua các bộ định tuyến khác bên ngoài mạng của chúng ta.
Tóm lại, chúng ta có thể nhận thấy những điều sau:
- Số lượng bước nhảy/bộ định tuyến giữa hệ thống của bạn và hệ thống mục tiêu phụ thuộc vào thời điểm bạn chạy traceroute. Không có gì đảm bảo rằng các gói tin của bạn sẽ luôn theo cùng một lộ trình, ngay cả khi bạn đang ở cùng một mạng hoặc bạn lặp lại lệnh traceroute trong thời gian ngắn.
- Một số bộ định tuyến trả về địa chỉ IP công khai. Bạn có thể kiểm tra một vài trong số các bộ định tuyến này dựa trên phạm vi của bài kiểm thử thâm nhập dự kiến.
- Một số bộ định tuyến không trả lời.
Trả lời các câu hỏi bên dưới
- Trong Traceroute A, địa chỉ IP của bộ định tuyến/bước nhảy cuối cùng trước khi đến tryhackme.com là gì?172.67.69.208
- Trong Traceroute B, địa chỉ IP của bộ định tuyến/bước nhảy cuối cùng trước khi đến tryhackme.com là gì?104.26.11.229
- Trong Traceroute B, có bao nhiêu bộ định tuyến giữa hai hệ thống?26
- Khởi động VM đính kèm từ Nhiệm vụ 3 nếu nó chưa được khởi động. Trên AttackBox, chạy traceroute 10.201.14.10. Kiểm tra có bao nhiêu bộ định tuyến/bước nhảy giữa AttackBox và VM mục tiêu.
Task 5: Telnet
Giao thức TELNET (Teletype Network) được phát triển vào năm 1969 để giao tiếp với một hệ thống từ xa thông qua giao diện dòng lệnh (CLI). Do đó, lệnh telnet sử dụng giao thức TELNET cho quản trị từ xa. Cổng mặc định được telnet sử dụng là 23. Về khía cạnh bảo mật, telnet gửi tất cả dữ liệu, bao gồm tên người dùng và mật khẩu, ở dạng cleartext. Việc gửi ở dạng cleartext khiến bất kỳ ai có quyền truy cập vào kênh liên lạc cũng có thể dễ dàng đánh cắp thông tin đăng nhập. Giải pháp thay thế an toàn là giao thức SSH (Secure SHell).
Tuy nhiên, ứng dụng khách telnet, với sự đơn giản của nó, có thể được dùng cho các mục đích khác. Biết rằng ứng dụng khách telnet dựa vào giao thức TCP, bạn có thể dùng Telnet để kết nối đến bất kỳ dịch vụ nào và lấy banner của nó. Sử dụng telnet 10.201.14.10 PORT, bạn có thể kết nối đến bất kỳ dịch vụ nào chạy trên TCP và thậm chí trao đổi vài thông điệp trừ khi nó sử dụng mã hóa.
Giả sử chúng ta muốn khám phá thêm thông tin về một máy chủ web đang lắng nghe trên cổng 80. Chúng ta kết nối đến máy chủ tại cổng 80, rồi giao tiếp bằng giao thức HTTP. Bạn không cần đi sâu vào giao thức HTTP; bạn chỉ cần gửi GET / HTTP/1.1. Để chỉ định một thứ khác ngoài trang chỉ mục mặc định, bạn có thể gửi GET /page.html HTTP/1.1, thao tác này sẽ yêu cầu page.html. Chúng ta cũng đã chỉ định cho máy chủ web từ xa rằng chúng ta muốn sử dụng phiên bản HTTP 1.1 để giao tiếp. Để nhận phản hồi hợp lệ thay vì lỗi, bạn cần nhập một giá trị cho host host: example và nhấn enter hai lần. Thực hiện các bước này sẽ trả về trang chỉ mục được yêu cầu.
Pentester Terminal
pentester@TryHackMe$ telnet 10.201.14.10 80
Trying 10.201.14.10...
Connected to 10.201.14.10.
Escape character is '^]'.
GET / HTTP/1.1
host: telnet
HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Tue, 17 Aug 2021 11:13:25 GMT
Content-Type: text/html
Content-Length: 867
Last-Modified: Tue, 17 Aug 2021 11:12:16 GMT
Connection: keep-alive
ETag: "611b9990-363"
Accept-Ranges: bytes
...
Điều đặc biệt chúng ta quan tâm là khám phá loại và phiên bản của máy chủ web đã cài đặt, Server: nginx/1.6.2. Trong ví dụ này, chúng ta giao tiếp với một máy chủ web, vì vậy chúng ta sử dụng các lệnh HTTP cơ bản. Nếu chúng ta kết nối đến một máy chủ thư, chúng ta cần sử dụng các lệnh thích hợp dựa trên giao thức, chẳng hạn như SMTP và POP3.
Trả lời các câu hỏi bên dưới
- Khởi động VM đính kèm từ Nhiệm vụ 3 nếu nó chưa được khởi động. Trên AttackBox, mở terminal và sử dụng ứng dụng khách telnet để kết nối đến VM trên cổng 80. Tên của máy chủ đang chạy là gì?Apache
- Phiên bản của máy chủ đang chạy (trên cổng 80 của VM) là gì?2.4.61
Task 6: Netcat
Netcat hay đơn giản là nc có nhiều ứng dụng có giá trị đối với một pentester. Netcat hỗ trợ cả giao thức TCP và UDP. Nó có thể hoạt động như một máy khách kết nối tới một cổng đang lắng nghe; hoặc nó có thể đóng vai máy chủ lắng nghe trên một cổng do bạn chọn. Do đó, đây là một công cụ tiện lợi mà bạn có thể dùng như một máy khách hoặc máy chủ đơn giản qua TCP hoặc UDP.
Đầu tiên, bạn có thể kết nối tới một máy chủ, như bạn đã làm với Telnet, để thu thập banner của nó bằng nc 10.201.14.10 PORT, điều này khá giống với lệnh telnet 10.201.14.10 PORT trước đó. Lưu ý rằng bạn có thể cần nhấn SHIFT+ENTER sau dòng GET.
Pentester Terminal
pentester@TryHackMe$ nc 10.201.14.10 80
GET / HTTP/1.1
host: netcat
HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Tue, 17 Aug 2021 11:39:49 GMT
Content-Type: text/html
Content-Length: 867
Last-Modified: Tue, 17 Aug 2021 11:12:16 GMT
Connection: keep-alive
ETag: "611b9990-363"
Accept-Ranges: bytes
...
Trong terminal ở trên, chúng ta đã dùng netcat để kết nối tới 10.201.14.10 cổng 80 bằng nc 10.201.14.10 80. Tiếp theo, chúng ta gửi yêu cầu cho trang mặc định bằng GET / HTTP/1.1; chúng ta đang chỉ định cho máy chủ đích rằng máy khách của chúng ta hỗ trợ HTTP phiên bản 1.1. Cuối cùng, chúng ta cần đặt tên cho host của mình, nên đã thêm ở dòng mới, host: netcat; bạn có thể đặt tên host tùy ý vì điều này không ảnh hưởng đến bài tập này.
Dựa trên đầu ra Server: nginx/1.6.2 mà chúng ta nhận được, chúng ta có thể biết rằng trên cổng 80, có Nginx phiên bản 1.6.2 đang lắng nghe các kết nối đến.
Bạn có thể dùng netcat để lắng nghe trên một cổng TCP và kết nối tới một cổng đang lắng nghe trên hệ thống khác.
Trên hệ thống máy chủ, nơi bạn muốn mở một cổng và lắng nghe trên đó, bạn có thể chạy nc -lp 1234 hoặc tốt hơn, nc -vnlp 1234, tương đương với nc -v -l -n -p 1234, như bạn có thể nhớ từ phòng Linux. Thứ tự chính xác của các chữ cái không quan trọng miễn là số cổng được đặt ngay sau -p.
| -l | Listen mode |
| -p | Specify the Port number |
| -n | Numeric only; no resolution of hostnames via DNS |
| -v | Verbose output (optional, yet useful to discover any bugs) |
| -vv | Very Verbose (optional) |
| -k | Keep listening after client disconnects |
Ghi chú:
- tùy chọn -p nên xuất hiện ngay trước số cổng bạn muốn lắng nghe.
- tùy chọn -n sẽ tránh việc tra cứu DNS và cảnh báo.
- các số cổng nhỏ hơn 1024 yêu cầu đặc quyền root để lắng nghe.
Ở phía máy khách, bạn sẽ chạy nc 10.201.14.10 PORT_NUMBER. Dưới đây là một ví dụ dùng nc để echo. Sau khi bạn thiết lập thành công kết nối tới máy chủ, bất cứ thứ gì bạn gõ ở phía máy khách sẽ được phản chiếu (echo) ở phía máy chủ và ngược lại.
Xem xét ví dụ sau. Ở phía máy chủ, chúng ta sẽ lắng nghe trên cổng 1234. Chúng ta có thể đạt được điều này với lệnh nc -vnlp 1234 (giống như nc -lvnp 1234). Trong trường hợp của chúng ta, máy chủ lắng nghe có địa chỉ IP 10.201.14.10, vì vậy chúng ta có thể kết nối tới nó từ phía máy khách bằng cách thực thi nc 10.201.14.10 1234. Thiết lập này sẽ echo bất cứ thứ gì bạn gõ ở một phía sang phía còn lại của đường hầm TCP. Bạn có thể tìm bản ghi quá trình này bên dưới. Lưu ý rằng máy chủ lắng nghe ở phía bên trái màn hình.
Trả lời các câu hỏi bên dưới
- Khởi động VM và mở AttackBox. Khi AttackBox tải xong, dùng Netcat để kết nối tới cổng 21 của VM. Phiên bản của máy chủ đang chạy là gì?0.71
$ nc 10.201.112.32 21
220 ip-10-201-112-32.ec2.internal FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
Task 7: Summary
Trong phòng này, chúng ta đã đề cập đến rất nhiều công cụ khác nhau. Thật dễ dàng để ghép một vài công cụ lại với nhau thông qua một shell script để xây dựng một bộ quét mạng và hệ thống sơ khai. Bạn có thể dùng traceroute để lập bản đồ đường đi tới mục tiêu, ping để kiểm tra liệu hệ thống mục tiêu có phản hồi ICMP Echo hay không, và telnet để kiểm tra những cổng nào đang mở và có thể truy cập bằng cách thử kết nối tới chúng. Các bộ quét sẵn có thực hiện việc này ở mức độ tiên tiến và tinh vi hơn nhiều, như chúng ta sẽ thấy trong bốn phòng tiếp theo với nmap.
| ping | ping -c 10 10.201.112.32 trên Linux hoặc macOS |
| ping | ping -n 10 10.201.112.32 trên MS Windows |
| traceroute | traceroute 10.201.112.32 trên Linux hoặc macOS |
| tracert | tracert 10.201.112.32 trên MS Windows |
| telnet | telnet 10.201.112.32 PORT_NUMBER |
| netcat as client | nc 10.201.112.32 PORT_NUMBER |
| netcat as server | nc -lvnp PORT_NUMBER |
Mặc dù đây là những công cụ cơ bản, chúng sẵn có trên hầu hết các hệ thống. Đặc biệt, một trình duyệt web được cài đặt trên hầu như mọi máy tính và điện thoại thông minh và có thể là một công cụ thiết yếu trong bộ công cụ của bạn để tiến hành trinh sát mà không gây báo động. Nếu bạn muốn có kiến thức sâu hơn về Developer Tools, chúng tôi khuyến nghị tham gia Walking An Application.
| Linux hoặc MS Windows | Ctrl+Shift+I |
| macOS | Option + Command + I |
Trả lời các câu hỏi bên dưới
Đảm bảo rằng bạn thành thạo các công cụ cơ bản nhưng thiết yếu khác nhau mà chúng tôi đã trình bày trong phòng này trước khi chuyển sang các công cụ tinh vi hơn.
'Labs > Information Gathering' 카테고리의 다른 글
| Sakura Room - TryHackMe (0) | 2025.10.27 |
|---|---|
| OhSINT - TryHackMe (0) | 2025.10.26 |
| Shodan.io - TryHackMe (0) | 2025.10.25 |
| Nmap Live Host Discovery - TryHackMe (0) | 2025.10.25 |
| Passive Reconnaissance - TryHackMe (0) | 2025.10.24 |