Trong phòng đầu tiên của Mô-đun An ninh mạng,mình tập trung vào việc trinh sát thụ động. Trong căn phòng thứ hai này, mình tập trung vào việc do thám tích cực và các công cụ thiết yếu liên quan đến nó. Mình 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 của mình. Hơn nữa, mình 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 của mình mà không cần bất kỳ hình thức tham gia hoặc kết nối trực tiếp nào. Bạn đang theo dõi từ xa hoặc kiểm tra thông tin có sẵn công khai.
Do thám chủ động yêu cầu bạn thực hiện một số loại liên lạc với mục tiêu của bạn. Liên hệ này có thể là một cuộc gọi điện thoại hoặc một chuyến thăm công ty mục tiêu dưới một số lý do để thu thập thêm thông tin, thường là một phần của kỹ thuật xã hội. Ngoài ra, nó có thể là một kết nối trực tiếp đến hệ thống đích, cho dù 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 nghĩ về nó giống như bạn đang kiểm tra chặt chẽ cửa sổ và khóa cửa. Do đó, điều cần thiết là phải nhớ không tham gia vào công việc do thám tích cực trước khi nhận được ủy quyền hợp pháp đã ký từ khách hàng.
Tại căn phòng này, mình tập trung trinh sát tích cực. Trinh sát chủ động bắt đầu với các kết nối trực tiếp được thực hiện vớ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 tất cả các kết nối đều đáng ngờ. Có thể để cho hoạt động do thám hoạt động của bạn xuất hiện như hoạt động khách hàng thường xuyên. Xem xét duyệt web; không ai có thể nghi ngờ một trình duyệt được kết nối với một máy chủ web mục tiêu trong số hàng trăm người dùng hợp pháp khác. Bạn có thể sử dụng những kỹ thuật như vậy để có lợi cho mình khi làm việc như một phần của đội đỏ (những người tấn công) và không muốn báo động cho đội xanh (những người phòng thủ).
Trong phòng này, chúng ta xem qua các công cụ khác nhau thường được đóng gói với hầu hết các hệ điều hành hoặc có thể dễ dàng có được. Mình bắt đầu với trình duyệt web và các công cụ dành cho nhà phát triển được tích hợp sẵn của nó; hơn nữa, chúng tôi chỉ cho bạn cách một trình duyệt web có thể được “vũ trang” để trở thành một khung do thám hiệu quả. Sau đó, mình thảo luận về các công cụ lành tính khác như ping
, traceroute
, và telnet
. Tất cả các chương trình này yêu cầu kết nối với mục tiêu, và do đó các hoạt động của mình sẽ nằm trong tình trạng do thám tích cực.
Căn phòng này thu hút sự quan tâm của 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 việc trinh sát tích cực. Các công cụ dành cho nhà phát triển trình duyệt web có thể mất một chút nỗ lực để có được sự quen thuộc, mặc dù nó cung cấp giao diện người dùng đồ họa. Các công cụ dòng lệnh được sử dụng tương đối đơn giản.
Chú ý quan trọng: Xin lưu ý rằng nếu bạn chưa đă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.
Task 2 Web Browser
Trình duyệt web có thể là một công cụ tiện lợi, đặc biệt là nó có sẵn trên tất cả các hệ thống. Có một số cách mà bạn có thể sử dụng trình duyệt web để thu thập thông tin về mục tiêu.
Ở cấp độ vận chuyển, trình duyệt kết nối với:
- Cổng TCP 80 theo mặc định khi trang web được truy cập qua HTTP
- Cổng TCP 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 nên 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 với 127.0.0.1 (localhost) tại cổng 8834 thông qua giao thức HTTPS. Nếu có một máy chủ HTTPS đang nghe trên cổng đó, mình sẽ nhận được một trang web.
Trong khi duyệt một trang web, bạn có thể nhấn Ctrl+Shift+I
trên PC hoặc trên máy MacOption + Command + I
(⌥ + ⌘ + I
) để mở Công cụ dành cho nhà phát triển 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. Công cụ dành cho nhà phát triển cho phép bạn kiểm tra nhiều thứ mà trình duyệt của bạn đã nhận và trao đổi với máy chủ từ xa. Ví dụ: bạn có thể xem và thậm chí sửa đổi 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.
Dưới đây là ảnh chụp màn hình của Công cụ dành cho nhà phát triển Firefox. Chrome DevTools khá giống nhau.
Ngoài ra còn có rất nhiều tiện ích bổ sung cho Firefox và Chrome có thể giúp ích trong quá trình kiểm tra thâm nhập. Đây là vài ví dụ:
- FoxyProxy cho phép bạn nhanh chóng thay đổi máy chủ proxy bạn đang sử 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 đang 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ại đây.
- User-Agent Switcher and Manager cung cấp cho bạn khả năng giả vờ đang truy cập trang web từ một hệ điều hành khác hoặc 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 web bằng iPhone trong khi thực tế, bạn đang truy cập nó từ Mozilla Firefox. Bạn có thể tải xuống Trình chuyển đổi và Trình quản lý Tác nhân Người dùng cho Firefox tại đây.
- Wappalyzer cung cấp thông tin chi tiết về các công nghệ được sử dụng trên các trang web đã truy cập. Phần mở rộng như vậy rất tiện dụng, chủ yếu 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 thấy Wappalyzer cho Firefox tại đây.
Task 3 Ping
Ping sẽ giúp bạn liên tưởng đến trò chơi bóng bàn (bóng bàn). Bạn ném bóng và mong đợi nhận lại nó. Mục đích chính của ping là để kiểm tra xem bạn có thể kết nối với hệ thống từ xa và hệ thống từ xa có thể liên lạc lại với bạn hay không. Nói cách khác, ban đầu, điều này được sử dụng để kiểm tra kết nối mạng; tuy nhiên, chúng tôi quan tâm hơn đến các công dụng khác nhau của nó: kiểm tra xem hệ thống từ xa có trực tuyến hay không.
Nói một cách dễ hiểu, lệnh ping sẽ gửi một gói tin đến 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 đang hoạt động giữa hai hệ thống.
Nếu bạn thích một định nghĩa kén chọn hơn, ping là lệnh gửi một gói ICMP Echo đến một hệ thống từ xa. Nếu hệ thống từ xa đang trực tuyến và gói ping được định tuyến chính xác và không bị chặn bởi bất kỳ tường lửa nào, hệ thống từ xa sẽ gửi lại ICMP Echo Reply. Tương tự, phản hồi ping sẽ đến được hệ thống đầu tiên nếu được định tuyến thích hợp và không bị chặn bởi bất kỳ tường lửa nào.
Mục tiêu của lệnh như vậy là để đảm bảo rằng hệ thống đích đang trực tuyến trước khi chúng tôi dành thời gian thực hiện quét chi tiết hơn để phát hiện ra hệ điều hành và dịch vụ đang chạy.
Trên thiết bị đầu cuối AttackBox, bạn có thể bắt đầu sử dụng ping như ping MACHINE_IP
hoặc ping HOSTNAME
. Trong trường hợp thứ hai, hệ thống cần phân giải HOSTNAME thành địa chỉ IP trước khi gửi gói ping. Nếu bạn không chỉ định số lượng trên hệ thống Linux, bạn sẽ cần phải nhấn CTRL+c
ép buộc dừng lệnh. 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 tin. Đ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 chúng tôi đặc biệt quan tâm đến ping (ICMP echo / type 8) và ping reply (ICMP echo reply / type 0). Để biết chi tiết ICMP không bắt buộc phải sử dụng ping.
Trong ví dụ sau, mình đã chỉ định tổng số gói là 5. Từ thiết bị đầu cuối của AttackBox, mình bắt đầu ping MACHINE_IP
. Chúng tôi đã học được rằng MACHINE_IP
đang hoạt động và không chặn các yêu cầu phản hồi ICMP. Hơn nữa, bất kỳ tường lửa và bộ định tuyến nào trên tuyến gói cũng không chặn các yêu cầu ICMP echo.
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 rằng hệ thống đích đ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. Mình đã truyền năm gói tin và nhận được năm thư trả lời. Mình nhận thấy rằng, trung bình mất 0,475 mili giây để trả lời đến hệ thống của mình, với mức tối đa là 0,636 mili giây.
Từ quan điểm thử nghiệm thâm nhập, mình sẽ cố gắng khám phá thêm về mục tiêu này. Mình sẽ cố gắng tìm hiểu càng nhiều càng tốt, chẳng hạn như cổng nào đang mở và dịch vụ nào đang chạy.
Hãy xem xét trường hợp sau: mình tắt máy ảo mục tiêu và sau đó thử ping MACHINE_IP
. Như bạn mong đợi trong ví dụ sau,mình không nhận được bất kỳ câu trả lời nào.
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, mình đã biết rằng mình đã tắt máy tính đích có MACHINE_IP. Đối với mỗi ping, hệ thống mình đang sử dụng, AttackBox trong trường hợp này, đang phản hồi với "Máy chủ đích không thể truy cập". Chúng ta có thể thấy rằng chúng ta đã truyền năm gói, nhưng không có gói nào được nhận, dẫn đến mất 100% gói.
Nói chung, khi mình không nhận được phản hồi ping, có một số giải thích sẽ giải thích lý do tại sao mình 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 bị tắt, hoặc hệ điều hành đã bị lỗi.
- Nó được rút phích cắm khỏi mạng hoặc có một thiết bị mạng bị lỗi trên đường dẫn.
- 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 đã được rút phích cắm khỏi mạng.
Task 4 Traceroute
Như tên cho thấy, lệnh traceroute theo dõi lộ trình được thực hiện bởi các gói từ hệ thống của bạn đến một máy chủ khác. Mục đích của quá trình theo dõi là tìm địa chỉ IP của các bộ định tuyến hoặc bước nhảy mà một gói tin truyền đi khi nó đi từ hệ thống của bạn đến một 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ó rất hữu ích vì nó cho biết số bước nhảy (bộ định tuyến) giữa hệ thống của bạn và máy chủ đích. Tuy nhiên, lưu ý rằng lộ trình được thực hiện bởi các gói có thể thay đổi do nhiều bộ định tuyến sử dụng giao thức định tuyến động thích ứng với những thay đổi của mạng.
Trên Linux và macOS, lệnh sử dụng là traceroute MACHINE_IP
và trên MS Windows, là tracert MACHINE_IP
. traceroute
cố gắng khám phá các bộ định tuyến trên đường dẫn từ hệ thống của bạn đến hệ thống đích.
Không có cách nào trực tiếp để khám phá đường dẫn từ hệ thống của bạn đến hệ thống đích. Chúng tôi dựa vào ICMP để “lừa” các bộ định tuyến tiết lộ địa chỉ IP của chúng. Chúng ta có thể thực hiện điều này bằng cách sử dụng một thời gian tồn tại (TTL) nhỏ trong trường tiêu đề IP. Mặc dù chữ T trong TTL là viết tắt của thời gian, nhưng TTL cho biết số lượng bộ định tuyến / bước nhảy tối đa mà một gói tin có thể đi qua trước khi bị loại bỏ; TTL không phải là số lượng đơ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 một trước khi chuyển nó đế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ó sẽ giảm đi 1. Ban đầu, nó để lại hệ thống với giá trị TTL là 64; nó đạt đến hệ thống mục tiêu với giá trị TTL là 60 sau khi đi qua 4 bộ định tuyến.
Tuy nhiên, nếu TTL đạt đến 0, nó sẽ bị loại bỏ và vượt quá Thời gian tồn tại của ICMP sẽ được gửi đến người gửi ban đầu. Trong hình sau, hệ thống đặt TTL thành 1 trước khi gửi đến bộ định tuyến. Bộ định tuyến đầu tiên trên đường dẫn 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 và gửi thông báo lỗi trong quá trình truyền vượt quá thời gian ICMP. Lưu ý rằng một số bộ định tuyến được cấu hình để không gửi các thông báo ICMP như vậy khi loại bỏ một gói.
Trên Linux, traceroute
quy trình theo dõi sẽ bắt đầu bằng cách gửi các gói dữ liệu UDP trong gói IP của TTL là 1. Do đó, nó khiến bộ định tuyến đầu tiên gặp phải TTL = 0 và gửi ICMP Time-to-Live vượt quá trở lại. Do đó, TTL là 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 tin khác với TTL = 2; gói tin này sẽ bị loại bỏ ở bộ định tuyến thứ hai. Và như thế. Hãy thử điều này trên các hệ thống trực tiếp.
Trong các ví dụ sau, chúng tôi chạy cùng một lệnh, traceroute tryhackme.com
từ TryHackMe’s AttackBox. Mình nhận thấy rằng các lần chạy khác nhau có thể dẫn đến các tuyến đường khác nhau được thực hiện bởi các gói.
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 theo dõi ở 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 tôi gửi ba gói với TTL được đặt thành 1, sau đó ba gói với TTL được đặt thành 2, v.v. Tùy thuộc vào cấu trúc liên kết mạng, chúng tôi có thể nhận được câu trả lời từ tối đa 3 bộ định tuyến khác nhau, tùy thuộc vào tuyến đường mà gói tin thực hiện. Hãy xem xét dòng số 12, bộ định tuyến thứ mười hai với địa chỉ IP được liệt kê đã bỏ gói ba lần và gửi một tin nhắn trong quá trình chuyển tiếp vượt quá thời gian ICMP. Dòng 12 99.83.69.207 (99.83.69.207) 17.603 ms 15.827 ms 17.351 ms
hiển thị thời gian tính bằng mili giây để mỗi câu trả lời đến được hệ thống của mình .
Mặt khác, chúng ta có thể thấy rằng chúng ta chỉ nhận được một câu trả lời duy nhất trên dòng thứ ba. Hai ngôi sao trong đầu ra 3 * 100.66.16.176 (100.66.16.176) 8.006 ms *
cho biết rằng hệ thống của mình không nhận được hai thông báo ICMP vượt quá thời gian dự kiến trong quá trình chuyển tiếp.
Cuối cùng, trong dòng đầu tiên của đầu ra, chúng ta có thể thấy rằng các gói rời khỏi AttackBox sẽ đi theo các lộ trình khác nhau. Chúng ta có thể thấy hai bộ định tuyến phản hồi TTL là một. Hệ thống của chúng tôi không bao giờ nhận được thông báo ICMP thứ ba như mong đợi.
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 theo dõi, mình nhận thấy rằng lần này các gói có một lộ trình dài hơn, đi qua 26 bộ định tuyến. Nếu bạn đang chạy một tuyến đường tới một hệ thống trong mạng của mình, tuyến đường sẽ không thể thay đổi. Tuy nhiên, chúng ta không thể mong đợi tuyến đường được duy trì cố định khi các gói tin cần phải đ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 đích phụ thuộc vào thời gian bạn đang chạy theo dõi. Không có gì đảm bảo rằng các gói của bạn sẽ luôn đi theo cùng một lộ trình, ngay cả khi bạn đang ở trên cùng một mạng hoặc bạn lặp lại lệnh traceroute trong một thời gian ngắn.
- Một số bộ định tuyến trả về địa chỉ IP công cộng. 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 thử nghiệm thâm nhập dự định.
- Một số bộ định tuyến không trả lời.
Task 5 Telnet
Giao thức TELNET (Teletype Network) được phát triển vào năm 1969 để giao tiếp với 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 để quản trị từ xa. Cổng mặc định được sử dụng bởi telnet là 23. Từ góc độ 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ưới dạng văn bản rõ ràng. Gửi bằng văn bản rõ ràng giúp bất kỳ ai, những người có quyền truy cập vào kênh liên lạc, dễ dàng lấy 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 sử dụng cho các mục đích khác. Biết rằng ứng dụng khách telnet dựa trên giao thức TCP, bạn có thể sử dụng Telnet để kết nối với bất kỳ dịch vụ nào và lấy biểu ngữ của nó. Sử dụng telnet MACHINE_IP PORT
, bạn có thể kết nối với bất kỳ dịch vụ nào chạy trên TCP và thậm chí trao đổi một vài tin nhắn trừ khi nó sử dụng mã hóa.
Giả sử mình muốn khám phá thêm thông tin về máy chủ web, lắng nghe trên cổng 80. Mình kết nối với máy chủ ở cổng 80 và sau đó chúng tôi giao tiếp bằng giao thức HTTP. Bạn không cần phải đi sâu vào giao thức HTTP; bạn chỉ cần phát hành GET / HTTP/1.1
. Để chỉ định một cái gì đó khác với trang chỉ mục mặc định, bạn có thể phát hànhGET /page.html HTTP/1.1
,cái nào sẽ yêu cầu page.html
. Mình cũng chỉ định máy chủ web từ xa mà mình muốn sử dụng HTTP phiên bản 1.1 để giao tiếp. Để nhận được phản hồi hợp lệ, thay vì gặp lỗi, bạn cần nhập một số giá trị cho máy chủ lưu trữ host: example
và nhấn enter hai lần. Thực hiện các bước này sẽ cung cấp trang chỉ mục được yêu cầu.
pentester@TryHackMe$ telnet MACHINE_IP 80
Trying MACHINE_IP...
Connected to MACHINE_IP.
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
...
Mối quan tâm đặc biệt đối với chúng tôi 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, mình đã giao tiếp với một máy chủ web, vì vậy mình sử dụng các lệnh HTTP cơ bản. Nếu mình kết nối với máy chủ thư, mình 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.
Task 6 Netcat
Netcat hay đơn giản là nc có các ứng dụng khác nhau có thể có giá trị lớn đố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 với một cổng lắng nghe; cách khác, nó có thể hoạt động như một máy chủ lắng nghe trên một cổng bạn chọn. Do đó, nó là một công cụ tiện lợi mà bạn có thể sử dụng như một máy khách hoặc máy chủ đơn giản qua TCP hoặc UDP.
Trước tiên, bạn có thể kết nối với một máy chủ, như bạn đã làm với Telnet, để thu thập biểu ngữ của nó bằng cách sử dụng nc MACHINE_IP PORT
, khá giống với trước đây của mình telnet MACHINE_IP PORT
. Lưu ý rằng bạn có thể cần nhấn SHIFT + ENTER sau dòng GET.
pentester@TryHackMe$ nc MACHINE_IP 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 thiết bị đầu cuối được hiển thị ở trên, mình đã sử dụng netcat để kết nối với cổng MACHINE_IP 80 bằng cách sử dụng nc MACHINE_IP 80. Tiếp theo, mình đưa ra nhận được cho trang mặc định bằng cách sử dụng GET / HTTP / 1.1; mình đang chỉ định máy chủ đích mà máy khách của mình hỗ trợ HTTP phiên bản 1.1. Cuối cùng, mình cần đặt tên cho máy chủ của mình, vì vậy mình đã thêm vào một dòng mới, máy chủ: netcat; bạn có thể đặt tên cho máy chủ của mình bất cứ thứ gì vì điều này không ảnh hưởng đến bài tập này.
Dựa trên Máy chủ đầu ra: nginx / 1.6.2 mà mình nhận được, mình có thể biết rằng trên cổng 80,mình có Nginx phiên bản 1.6.2 lắng nghe các kết nối đến.
Bạn có thể sử dụng netcat để nghe trên cổng TCP và kết nối với cổ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à nghe trên đó, bạn có thể phát hành 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 sẽ 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 đứng trước -p trực tiếp.
lựa chọn | nghĩa |
---|---|
-l | Chế độ nghe |
-p | Chỉ định số cổng |
-n | Chỉ số; không phân giải tên máy chủ thông qua DNS |
-v | Đầu ra dài dòng (tùy chọn, nhưng hữu ích để phát hiện ra bất kỳ lỗi nào) |
-vv | Rất dài dòng (tùy chọn) |
-k | Tiếp tục nghe sau khi khách hàng ngắt kết nối |
NGhi chú:
- tùy chọn -p sẽ xuất hiện ngay trước số cổng bạn muốn nghe.
- tùy chọn -n sẽ tránh tra cứu và cảnh báo DNS.
- số cổng nhỏ hơn 1024 yêu cầu quyền root để nghe.
Về phía khách hàng, bạn sẽ phát hành nc MACHINE_IP PORT_NUMBER. Đây là một ví dụ về việc sử dụng nc để echo. Sau khi bạn thiết lập thành công kết nối với máy chủ, bất cứ thứ gì bạn nhập ở phía máy khách sẽ được gửi lại ở phía máy chủ và ngược lại.
Hãy xem xét ví dụ sau. Ở phía máy chủ, mình sẽ lắng nghe trên cổng 1234. Mình có thể đạt được điều này bằng lệnh nc -vnlp 1234 (giống như nc -lvnp 1234). Trong trường hợp của mình, máy chủ lắng nghe có địa chỉ IP MACHINE_IP, vì vậy mình có thể kết nối với nó từ phía máy khách bằng cách thực thi nc MACHINE_IP 1234. Thiết lập này sẽ lặp lại bất cứ điều gì bạn nhập ở bên này sang bên kia của đường hầm TCP. Bạn có thể tìm thấy bản ghi của quá trình bên dưới. Lưu ý rằng máy chủ lắng nghe nằm ở phía bên trái của màn hình.
0 Comments