Have I been Hacked
หลัง
จาก hacker ได้ทำการ compromise ระบบแล้วนั้น ส่วนใหญ่ hacker
จะไม่ทำการลบข้อมูลหรือทำอะไรที่จะเป็นผลเสียต่อระบบ ของท่าน แต่ hackers
จะทำการติดตั้ง back door ในระบบซึ่งทำให้ hacker สามารถเข้าถ้าระบบในฐานะ
root หรือบางที hacker อาจใช้ระบบของท่านในการโจมตีระบบอื่นๆต่อไป
เพราะ
ฉะนั้นหากท่านประสบปัญหาอย่างเช่น
ระบบของท่านเกิดช้าขึ้นมาอย่างผิดปกติแต่เมื่อท่านได ้ทำการตรวจสอบ disk
space และ process แล้วก็ไม่มีสิ่งใดผิดปกติ checklist
ต่อไปนี้คือสิ่งที่ท่านควรตรวจสอบเพื่อบอกว่าระบบของ ท่านถูก hacked
หรือไม่
1. เหตุการณ์หรือสัญญาณที่ผิดปกติ
ถ้าท่านไม่สามารถทำการ ssh, telnet หรือ login เข้าสู่เครื่องได้เป็นสิ่งบอกเหตุว่าท่านอาจจะถูก hacked ได้
ท่าน
ควรจะทำการตรวจสอบเหตุต่างๆ ที่ไม่สามารถอธิบาย เช่น network ซึ่งผิดปกติ
resource ถูกใช้ไปเยอะมากทั้งที่มี users เข้าใช้อยู่เพียงไม่กี่คน
ควร
ตรวจสอบ /etc/password file ว่ามี account
ใดบ้างที่เพิ่งถูกเพิ่มเข้ามาโดยที่คุณไม่ได้ทำการเพ ิ่มเอง รวมทั้งตรวจสอบ
accounts ที่ไม่มี password หรือ UID ถูก set ให้เท่ากับ "0"
2. ตรวจหา sniffer
เนื่อง
จาก sniffer จะทำให้ network interface รับ packet
ทุกชนิดที่เข้ามาและทำการบันทึก packet ซึ่งประกอบด้วย username และ
password ของ ftp และ telnet แม้ว่าท่านจะแก้ปัญหานี้โดยการใช้ switching
แทน hub แต่ถ้าเครื่องดังกล่าวเป็น Internet gateway
แล้วปัญหาก็ไม่ได้หมดไป ท่านสามารถทำการ check promiscoous mode ได้โดย #
ifconfig - a/grep PROMISC
แต่มี rootkit บางตัวที่ทำการเปลี่ยนแปลง ifconfig เพื่อหลบซ่อนจากการใช้ parameters นี้ เพื่อความแน่ใจให้ท่าน run antisniff http://www.securitysoftwaretech.om/antisniff/ จาก remote machine
3. ตรวจสอบ logs
ทำ
การตรวจสอบ log files โดยการใช้คำสั่ง last เพื่อที่จะ list logins
ท้ายๆออกมาแล้วตรวจสอบว่ามี unknown users หรือ usernames ที่แปลกๆหรือไม่
รวมทั้ง access time ของแต่ละ user ด้วยว่ามีความผิดปกติหรือไม่
# last | head
ตรวจสอบ message file ใน /var/log/ (สำหรับ Linux) หรือ /var/adm/ (สำหรับ Solaris)
รวม
ทั้งตรวจสอบ log files อื่นๆ ซึ่งใช้โดย syslog (โดยดูจาก
/etc/syslog.conf) โดยการ grep su failures ทั้งหลายและเหตุการณ์ที่ vid = 0
# grap "vid = 0" /var/log/
และ
# grep "su" /var/log/
log files ซึ่งมีขนาดเท่ากับ "0" ก็อาจเป็นสัญญาณของการถูกบุกรุกเช่นเดียวกัน
เนื่อง
จาก rootkit ใหม่ๆ จะทำการลบ usermane จาก wtmp, utmp และ lastlog files
เพราะฉะนั้นหากท่านไม่ได้ใช้อุปกรณ์ที่เรียกว่า write once read many เช่น
CD-R ในการบันทึก log files ท่านไม่ควรไว้ใจ log files เท่าใดนัก
4. ไม่ควรเชื่อ ps command
ตรวจ
สอบชื่อและจำนวนของ running processes และพยายามหา processes
ที่ไม่ค่อยคุ้น ข้อแปลกๆ หรือ startup time ที่ไม่ค่อยปกติ รวมทั้ง process
ที่ใช้ CPU time มากๆอย่างไรก็ตามโดยปกติแล้วผู้บุกรุกจะ run sniffers
อยู่ภายใต้ daemon ปกติ เช่น sendmail หรือ named และ rootkits
โดยส่วนใหญ่ก็จะทำการเปลี่ยนแปลง ps และ pidof เพื่อที่จะหลบซ่อน process
ของพวกเขา ดังนั้นท่านควรจะเปรียบเทียบระหว่างผลลัพธ์ของ ps กับผลลัพธ์ใน
/proc เช่น
#ps --no-headers -ef | wc
เมื่อ
ท่าน run คำสั่งต่อไปนี้ใน RedHat 7.0 # ps - -no- headers- ef | wc
แล้วผลต่างกันกับที่ run # ls - d /proc/ [0-9]* นั่นคืออาจมี process
ที่แอบซ่อนอยู่
ในระบบ Solaris อาจใช้คำสั่ง crash เพื่อที่จะแสดง list ของ processes แล้วเปรียบเทียบกับ ps output
violin $ crash dumpfile = /dev/mem, namelist = /dev/ksyms, outfile = stdout > proc
หรือท่านอาจจะติดตั้งและ run Isof ftp://vic.cc.purdue.edu/pub/tools/ ซึ่งโปรแกรมนั้นจะบอกท่านว่า process ไหนกำลังใช้ files อะไร
5. ตรวจสอบ ports
ทำการ scan ports ของเครื่องโดยใช้ port scanner เช่น nmap [http://www.insecure.org/nmap/ ซึ่ง
ค่า defaults ของ nmap นั้นคือ port1-1024 แต่ trojan horses ส่วนใหญ่จะใช้
ports ที่สูงกว่านั้น หากท่านต้องการเฉพาะเจาะจง ports ที่ต้องการจะ scan
ให้ใช้ option-p เช่น
# nmap - p 1 - 65535 your_machin_address
หลังจากนั้น ให้ทำการใช้คำสั่ง netstat -a เพื่อตรวจสอบ port ที่เปิดอยู่บนเครื่องนั้นๆ
# netstat -a
หาก
พบว่ามี ports ที่ปรากฎใน output ของการใช้ nmap แต่ไม่ปรากฎใน output
เมื่อใช้คำสั่ง netstat นั้นอาจหมายถึง netstat
ได้ถูกเปลี่ยนแปลงเพื่อหลบซ่อน service บางอย่าง
6. ตรวจสอบ binaries
rootkits
ส่วนใหญ่จะทำการเปลี่ยนแปลง system binaries เพื่อทำการหลบซ่อน file,
sniffer หรือ port ที่ถูกเปิดอยู่ บน RedHat ท่านสามารถตรวจสอบ binaries
ได้โดยใช้คำสั่ง
altis $ rpm - va | grep '1...5'
ซึ่งผลลัพธ์ที่เกิดขึ้นอาจเป็นลักษณะนี้คือ
s.5.....T c/etc/services
s.5....T c/etc/info-dir
s.5....T c/etc/inetd.conf
นั้นหมายถึงขนาดของ file เปลี่ยน (5)
MD5 checksum เปลี่ยน (5)
และเวลาที่ได้รับการเปลี่ยนแปลงถูกเปลี่ยน (T)
บน
ระบบซึ่งเป็น UNIX ท่านสามารถใช้คำสั่ง find ค้นหา files
ที่ถูกเปลี่ยนแปลงในช่วงเวลาหนึ่งๆ ส่วน option ที่ใช้น่าจะใช้ -ctime
option ดังนี้
# find/ bin -ctime -7
แต่
วิธีที่ดีที่สุดคือใช้คำสั่ง cmp แล้วเปรียบเทียบ วันที่ ขนาดของไฟล์ และ
time-stamp ของ system files กับ machine ที่เป็น clean machine และใช้ OS
ประเภทเดียวกันซึ่งโดยปกติ binaries files ที่ถูกเปลี่ยนคือ
chsh, crontab, du, df, find, ifconfig, inedd, killall, login, ls, netstat, passwd, ps, sshd, syslogd และ top
ท่านสามารถใช้โปรแกรม tripwire หรือ samhain เพื่อให้แจ้งเตือนเมื่อ system files ถูกเปลี่ยนแปลง
Tripwire http://www.tripwire.org
samhain http://samhain.sourceforge.net
7. ตรวจสอบ Config Files
ท่านควรตรวจสอบ files ซึ่งถูกเปลี่ยนแปลงบ่อยๆได้แก่
/etc/inetd.conf file
หรือ
/etc/xinetd.conf file
หรือ
/etc/xinetd.d directory
พยายามตรวจดู service ที่เพิ่มเข้ามา ถูกเปลี่ยนแปลงหรือเป็น service ที่ท่านไม่คุ้นเคย
/etc/hosts.eguiv, ~/.rhosts
พยายามตรวจดู creationdate และ "+" รวมทั้ง host names ที่ท่านไม่คุ้นเคย
/dev/*
เนื่องจากมี rootkits บางประเภทที่จะติดตั้ง configuration files ใน /dev/
ท่านสามารถตรวจสอบ text files ใน /dev directory ได้ดัวนี้
# file /dev/* | grep text
/ dev/ ptyp : ASCIItext
/ dev/ ptyq : ASCIItext
/ dev/ ptyr : ASCIItext
จาก
ตัวอย่างนี้ท่านจะเห็นว่า rootkit ได้ใช้ text file ptyr เพื่อจะหลบซ่อนจาก
command lsใช้ ptyq เพื่อจะลบ sockets/ addresses ออกจาก netstat และใช้
ptyq เพื่อจะลบ processes ออกจาก ps
ในฐานะ root ให้ท่าน run crontab - l and atq เพื่อตรวจดูว่ามีโปรแกรมใดที่กำลังรอการทำงานอยู่หรื อไม่
8. ตรวจสอบ setuid, setgid และไฟล์อื่นๆที่หลบซ่อนอยู่
ทำ setuid และ setgid files จะ run อยู่ในฐานะ root แม้ว่าจะถูก executed โดย user ธรรมดาก็ตาม
หากท่านต้องการค้นหา setuid files ให้ใช้คำสั่ง
# find / - perm -4000 -print
และในการค้นหา setgid ให้ใช้คำสั่ง
# find / -perm -2000 -print
โดย
ปกติแล้วผู้บุกรุกจะแอบซ่อน setuid files และ tools ท่านไว้ใน hidden
directories ท่านสามารถตรวจสอบหา files ที่แอบซ่อนอยู่ได้โดยใช้คำสั่ง find
# find / -name " . * "
หรือบางทีผู้บุกรุกจะเลือก directory ไปในการแอบซ่อน files เช่น ~/ gnome, ~/.xauth เหล่านี้เป็นต้น
สรุป
หาก
ท่านคิดว่าท่านถูก hacked แน่นอนแล้ว ให้ทำการ disconnect จาก network
ทันทีและทำการ back up data แล้ว reinstall OS
หรือว่าหากท่านไม่สามารถปิดระบบได้ทันทีก็ควรจะเปลี่ ยน root password, ลบ
user account ที่คิดว่าเป็นอันตรายและทำการ set เวลาที่จะปิดระบบหลังทำการ
reinstall OS
เครดิต PMF
บางอ่านอาจ อ่านแล้วไม่เข้าใจ แต่ก้อดีกว่าไม่อ่านเลยครับ
อ่านแล้วกดขอบคุณด้วยจะเป็นพระคุณอย่างสูง