Đây là chủ đề mà các bạn cần nắm vững vàng các công cụ và mục đích của nó, khả năng ứng dụng và trường hợp nào … Hãy ghi chú lại các điểm chính và note, nên ghi chú một cách thông minh như dùng sketchnote hay áp dụng phương pháp SQUIDV (theo hướng dẫn chỉ cần mẫu khăn giấy).
Chạy đủ lab với 4 máy ảo là Kali 2019, Metasploitable 2 và 3, và một máy mục tiêu “private” của OSCP là Windows 7 (trong PWK v2 máy này là Windows 10 có tên là Client 251)
Lesson 24 – Giới Thiệu Active Information Gathering ( các bạn hãy xem đẩy đủ và chi tiết bài trình bày PWKv1-VN tại đây)
4 – Active Information Gathering ……………………………………………………………………………..
4.1 – DNS Enumeration …………………………………………………………………………………………………………………
4.1.1 – Interacting with a DNS Server ………………………………………………………………………………………….
4.1.2 – Automating Lookups …………………………………………………………………………………………………………
4.1.3 – Forward Lookup Brute Force ……………………………………………………………………………………………..
4.1.4 – Reverse Lookup Brute Force……………………………………………………………………………………………..
4.1.5 – DNS Zone Transfers ……………………………………………………………………………………………………….
4.1.6 – Relevant Tools in Kali Linux ……………………………………………………………………………………………
4.1.7 – Exercises …………………………………………………………………………………………………………………………
4.2 – Port Scanning……………………………………………………………………………………………………………………….
A Note From the Author…………………………………………………………………………………………………………….
4.2.1 – TCP CONNECT / SYN Scanning …………………………………………………………………………………..
4.2.2 – UDP Scanning………………………………………………………………………………………………………………..
4.2.3 – Common Port Scanning Pitfalls……………………………………………………………………………………….
4.2.4 – Port Scanning with Nmap ……………………………………………………………………………………………….
4.2.5 – OS Fingerprinting…………………………………………………………………………………………………………..
4.2.6 – Banner Grabbing/Service Enumeration…
4.2.7 – Nmap Scripting Engine (NSE) …
4.2.8 – Exercises …………………………………………………………………………………………………………………………
4.3 – SMB Enumeration ……………………………………………………………………………………………………………….
4.3.1 – Scanning for the NetBIOS Service……………………………………………………………………………………
4.3.2 – Null Session Enumeration ……………………………………………………………………………………………….
4.3.3 – Nmap SMB NSE Scripts …………………………………………………………………………………………………
4.3.4 – Exercises …………………………………………………………………………………………………………………………
4.4 – SMTP Enumeration ……………………………………………………………………………………………………………..
4.4.1 – Exercise…………………………………………………………………………………………………………………………..
4.5 – SNMP Enumeration …………………………………………………………………………………………………………….
A Note From the Author…………………………………………………………………………………………………………….
4.5.1 – MIB Tree ………………………………………………………………………………………………………………………..
4.5.2 – Scanning for SNMP………………………………………………………………………………………………………..
4.5.3 – Windows SNMP Enumeration Example…………………………………………………………………………..
4.5.4 – Exercises ……..
Lesson 25 DNS Enumeration , hay còn gọi tắt là DNS Enum, liệt kê DNS.
Hãy chạy lệnh #host -t ns megacorpone.com và xem kết quả, ta đã thực hành lệnh này qua 1 script bash shell, kết qua của lệnh với tùy chọn ns ra kết quả là name server, còn nếu tìm thông tin mail server hãy thay tùy chọn là mx , #host -t mx megacorpone.com và xem kết quả sẽ thấy thông tin mail server của megacorpone.com
Nếu chỉ muốn tìm IP của máy chủ web của megacorpone.com (thường là www) chỉ cần chạy lệnh
#host http://www.megacorpone.com , sẽ thấy IP là 33.100.193.76
Gơi nhớ lại chút, nếu muốn cát vùng IP của kết quả trên ta sẽ dùng lệnh gì , đáp án là lệnh cut với dấu phân cách là khoảng trắng (-d” “) và vùng thứ 4 (-f4), chỉ cần đưa thêm tùy chọn pipe vào là được ..
Nếu như tìm không ra tên máy chủ hay A record thì các bạn sẽ thấy host nó báo không tồn tại…
Lesson 26 – Trong bài này chúng ta sẽ tiến hành tự động hóa phân giải các domain con của megacorpone.com ví dụ work, email, www,w3w,ceh,cehvn… Nghĩa là chúng ta sẽ dự đoán một loạt các domain của mục tiêu để tiến hành thao tạc dạng brute force qua lệnh for do như bài trước. Vậy trước tiên hãy tạo một danh sách các domain như sau :
— Các bạn và các em hay mở nano hay gedit tạo 1 tập tin list.txt gồm nhiều dòng
list.txt
www
ftp
owa
…. như trong bài hướng dẫn.
Sau đó chúng ta sẽ truyền biến name qua danh sách này với các lệnh bash shell trong 1 tập tin là forward.sh
for name in $(cat list.txt) ;do
host $name.megacorpone.com
done
Sau khi xem kết quả thì thấy các dòng “has address” có 4 vùng (fied) được phân chia bằng khoảng trắng, ta sẽ lấy vùng 1 có domain name và vùng 4 là IP nên sẽ thêm vào lệnh grep “has address” và tiếp theo là cut
Cú pháp đây đủ sẽ như sau
for name in $(cat list.txt) ;do
host $name.megacorpone.com | grep ” has address” cut -d” ” -f1,4
done
Bây giờ gán quyền 755 rồi chạy forward.sh như video hướng dẫn
Các bạn hãy thực hành và chụp ảnh minh họa kết quả, có thể thay megacorpone.com bằng cehvietnam.com
Mở rộng : Hãy chạy lệnh trên 1 dòng và cho BQT biết kết quả (hình) hoặc comment cú pháp lệnh !
Lesson 27 : Reverse Lookup
Bài 26 các bạn đã forward với bash shell là forward.sh, ta thấy có các địa chỉ IP là 38.100.193.76,79,84,72,91
Vậy, hãy viết một bash script để tiến hành reverse (với ip theo range ta dùng seq như trong bài 1), lưu ý là địa chỉ các máy chủ của megacorpone có thể thay đổi trong thực tế, các bạn phải chủ động (chạy lệnh là thấy). Hãy thực hành và chụp kết quả minh họa gởi về BQT. Sau đây là bài hướng dẫn (xem thêm phẩn trình bày PWK1-VN phần 4 tại menu PreOSCP
Lesson 28 : DNS Zone Transfers : Các bạn đã rõ DNS làm gì, vậy thì một hệ thống lớn chắc hẳn phải có nhiều máy chủ DNS và cơ sở dữ liệu của các máy chủ này là các zone chúa những record như A, PTR, NS … Và để cò sự đồng bộ CSDL Zone thì phải có sự sao chép, update từ máy chủ này qua máy chủ khác và tiến trình này gọi là zone transfers. Đây là tiến trình phức tạp và phụ thuộc và hệ thống DNS dùng phần mềm gì, ví dụ có thê là sao chép incremental hay sao chép toàn bộ …
Vấn đề ở đây là, nếu không có sự kiểm soát th2i máy nào cũng có thể kéo zone từ máy khác về, điều này chắc chắn là 1 điểm yếu bảo mật như các máy chủ DNS mà SAIGONNET từng sử dụng trên nền tảng Solaris bị lỗi zonestranfers vào đầu những năm 2000.
Để kiểm tra môt máy chủ DNS có thể bí kéo zone hay zonestranfers như vậy hay không các bạn dùn lệnh host, đầu tiên ta xác định nameserver với #host -t ns megacorpone.com sẽ thấy
ns1.megacorpone.com , (và ns2 ns3)
Sau đó các bạn sử dụng lệnh
#host -l megacorpone.com ns1.megacorpone.com , kết quả không thành công (bị chặn zzonestranfers)
hãy thử với ns2 và ns3
#host -l megacorpone.com ns2.megacorpone.com
các bạn thấy gì nào, OK phải không, xem kỹ các domain …
thử cắt kết quả của #host -l megacorpone.com ns1.megacorpone.com để lấy cột name server xem nào ?
tip : cắt vùng 4, dấu phân cách là khoảng trắng , vậy | cut -d” ” -f4
root@kali:~/Desktop# host -t ns megacorpone.com
megacorpone.com name server ns2.megacorpone.com.
megacorpone.com name server ns1.megacorpone.com.
megacorpone.com name server ns3.megacorpone.com.
chạy lệnh sau
root@kali:~/Desktop# host -t ns megacorpone.com | cut -d” ” -f4
ns2.megacorpone.com.
ns3.megacorpone.com.
ns1.megacorpone.com.
root@kali:~/Desktop#
Phối hợp các lệnh và script thì ta phải viết lệnh thế nào để chạy trên 1 dòng và tiến hành zonetransfer cho domain này
… các em hãy thực hành chi tiết và đầy đủ
Trước tiên ta cần các địa chỉ name server qua lệnh
host -t ns megacorpone.com | cut -d ” ” -f4
sau đó lấy biến là server qua danh sách này với lệnh for … in rồi … do
for server in $(host -t ns megacorpone.com | cut -d ” ” -f4)
và thực thi lệnh cuối trên danh sách biến server với
do host -l megacorpone.com $server ;done
tóm lại lệnh sẽ là
#for server in $(host -t ns megacorpone.com | cut -d ” ” -f4); do host -l megacorpone.com $server ;done
Tiếp theo, ta hãy nâng cấp 1 line bash thành script để để tái sử dụng xem nào ?
Ví dụ viết 1 đoạn script axfr.sh khi chạy phải có tham số domain name ví dụ #./axfr.sh megacorpone.com
nếu không có tham số đầu vào thì in ra dòng phải có domain ex cehvietnam.com rồi thoát
vậy code script sẽ là
!#/bin/bash/
#simple zone transfers bash script
#$1 là tham so dau vao cua script
#neu co $1 thi chay lenh, khong thi in ra thogn bao, roi thoat
if [ – z “$1”]; then
echo “[*] Simple Zone transfer script , demo by CEH VIETNAM”
echo “[*] Usage : $0 <domain name vi du cehvietnam.com>”
exit 0
fi
#neu co tham so la domain name thi chay lenh host -l
for server in $(host -t ns $1 | cut -d ” ” -f4); do
host -l $1 $server | grep “has address”
done
####### xong #####
nói chung, trong bash script các bạn chỉ cần sắp xếp và test cẩn thận là ổn, nó sẽ không khó nếu chúng ta đi đúng bước, đúng quy trình và thực hành đầy đủ thi cũng simple như cái script, còn không thì thấy nó như một đống bùi nhùi, nhất là không rõ lệnh host làm gì, grep ra sao rồi cut thế nào thì potay chấm com 🙂
hãy xem video sau
Module 4 PWK v1 khá nặng và nhiều nhưng cũng không khó. Tiếp theo là port scanning, bạn nào đã CEH rồi thì lướt 5 phút để ghi nhận là chính ví lui tới cũng là nmap …, hay hơn nữa thì chơi đoan bash script trong example của tài liệu.
Các bạn thực hành đến đây là kha khá rồi, nhìn chung nó không khó nếu ta đã học qau CEH hay có kiến thức tương đương… Hoặc ít nhất phải là lớp nhập môn hacker mũ trắng.
Lesson 30 : TCP Connect Scan – Đúng như tên gọi, đây là scan theo kiểu kết nối đầy đủ , bắt tay 3 bước qua TCP, phải bật tcpdump hay wireshark lên để nhìn các bạn sẽ rõ (2 cái tool này trong phần Tool Thiết Yếu có trình bày) Kết quả kiểu scan nay rất chính xác nhưng là cơ chế quét mất thời gian và khá ồn ào, nên de74 bị phát hiện. Vấn đề là các bạn phải phát hiện được bằng mắt thường khi nhìn vào wireshark mới đúng chuẩn chuyên gia, chứ dùng IDS thì không nói.
Vậy mở wireshark trên Kali, chạy đúng card
Tiếp theo, các bạn có thể tcp connect scan với netcat qua lệnh
#nc -nvv -w 1 -z 192.168.30.35 3385-3395
nhưng tôi nghĩ các bạn cần nắm kỹ nmap để áp dụng , còn netcat thì biết thêm cho nó “phong phú”, hoặc khi cần scan mà khongc ó nmap chỉ có netcat thì ta mới dùng …, để ý output của wireshark khi scan nhé
Trên wireshark hãy loc IP đích và nguồn, rồi chú ý các TCP port và các cờ SYN, ACK, RST được gởi để nhận biết đây rõ ràng là tình huống scan port TCP connect