วิธีการใช้ซอฟต์แวร์แฮชแมวแฮชแฮชเพื่อระเบิดแฮชต่างๆ

ศูนย์ ความรู้พื้นฐาน

1. ฟังก์ชันแฮช

ฟังก์ชันแฮชเป็นคำทั่วไปสำหรับฟังก์ชันประเภทหนึ่ง อินพุตของฟังก์ชันประเภทนี้เป็นข้อมูลไบนารีโดยพลการ และเอาต์พุตเป็นข้อมูลไบนารีที่มีความยาวคงที่ ฟังก์ชันประเภทนี้มีลักษณะดังต่อไปนี้:

  • ทิศทางเดียว: การคำนวณเอาต์พุตจากอินพุตนั้นง่ายและรวดเร็ว ในขณะที่การอนุมานอินพุตจากเอาต์พุตนั้นเป็นไปไม่ได้ทางคณิตศาสตร์

  • ข้อจำกัดการชนกัน: เป็นการยากอย่างยิ่งที่จะค้นหาอินพุตสองตัวที่แตกต่างกันและมีเอาต์พุตเดียวกัน

ฟังก์ชันที่ตรงตามคุณลักษณะเหล่านี้สามารถเรียกได้ว่าฟังก์ชันแฮช ใช้ข้อมูลบางอย่างเป็นอินพุตของฟังก์ชันแฮชและคำนวณเอาต์พุต เป็นเรื่องปกติที่จะเรียกเอาต์พุตนี้ว่าค่าแฮชของข้อมูล หน้าที่หลักประการหนึ่งของฟังก์ชันแฮช

คือการจัดเก็บรหัสผ่านอย่างปลอดภัย แทนที่จะบันทึกรหัสผ่านโดยตรง (นั่นคือ ไม่บันทึกรหัสผ่านข้อความธรรมดา) จะบันทึกค่าแฮชของรหัสผ่าน ในระหว่างการตรวจสอบ คุณจะต้องคำนวณรหัสผ่านที่ป้อนอีกครั้งเท่านั้น เปรียบเทียบค่าแฮชของรหัสผ่านกับค่าแฮชของรหัสผ่านที่บันทึกไว้เพื่อดูว่ารหัสผ่านถูกต้องหรือไม่ เนื่องจากลักษณะทางเดียวของฟังก์ชันแฮชและข้อจำกัดการชนกัน จึงเป็นเรื่องยากสำหรับผู้โจมตีที่จะทราบรหัสผ่านแม้ว่าพวกเขาจะได้รับค่าแฮชของรหัสผ่านก็ตาม

2.hashcat

ผู้โจมตีได้ค่าแฮชของรหัสผ่าน ไม่มีทางรู้รหัสผ่านได้จริงหรือ? ไม่แน่นอน แม้ว่าการคำนวณรหัสผ่านโดยตรงจากค่าแฮชของรหัสผ่านจะเป็นไปไม่ได้ทางคณิตศาสตร์ แต่เรารู้ว่าฟังก์ชันแฮชนั้นง่ายและรวดเร็วในการคำนวณเอาต์พุตจากอินพุต ในกรณีที่เลวร้ายที่สุด คุณสามารถลองได้ รหัสผ่านที่มนุษย์อาจตั้งไว้ก็เป็นเพียงรหัสผ่านเหล่านั้น ลองทีละรหัส หากคุณโชคดี คุณก็ยังสามารถลองได้ การดำเนินการที่พยายามรับอินพุตที่สอดคล้องกับค่าแฮชอย่างต่อเนื่องเรียกว่าการระเบิด

จากแนวคิดนี้ hashcat จึงเกิดขึ้น ว่ากันว่า hashcat ถือกำเนิดขึ้นเพื่อพิสูจน์ว่าการระเบิดแฮชนั้นง่ายมาก hashcat อ้างว่าเป็นเครื่องมือระเบิดแฮชที่เร็วที่สุดในโลกและยังรองรับ GPU และ FGPA หากคุณมี


hashcat ไม่เพียงแต่รวดเร็วเท่านั้น แต่ยังรองรับฟังก์ชันแฮชมากกว่าสองร้อยอย่างมืออาชีพ โดยใช้คำสั่ง:

hashcat --help

คุณสามารถดูรายการฟังก์ชันแฮชทั้งหมดที่รองรับโดย hashcat มีมากเกินไปฉันจะไม่โพสต์ที่นี่

hashcat ติดตั้งตามค่าเริ่มต้นใน Kali และสามารถใช้งานได้โดยตรง แต่ Kali ของฉันได้รับการติดตั้งใน VirtualBox และฉันมักจะรู้สึกว่าโอกาสเสมือนช้ากว่าเล็กน้อย ดังนั้นฉันจึงต้องการใช้ hashcat ในโฮสต์ทางกายภาพ ขั้นแรกให้ไปที่เว็บไซต์อย่างเป็นทางการของ hashchat เพื่อดาวน์โหลด hashcat จนถึงตอนนี้ เวอร์ชันล่าสุดคือ v3.5.0 ซึ่งเผยแพร่เมื่อวันที่ 2017.04.05 จะเห็นได้จากวันที่อัปเดตว่า hashchat เต็มไปด้วยพลัง ช่วยขจัดปัญหาในการคอมไพล์และดาวน์โหลดแพ็คเกจไบนารีโดยตรง ซึ่งมีขนาดเพียง 2.7M ซึ่งเล็กมากเมื่อเทียบกับเกมที่มีราคาหลายสิบ G

หลังจากดาวน์โหลดเสร็จสิ้น ให้แตกการบีบอัด hashcat และคุณจะเห็น:

ไฟล์ดังกล่าวเป็นไฟล์ปฏิบัติการใน linux และ windows ภายใต้ 32 บิตและ 64 บิตตามลำดับ เพียงเลือกไฟล์ใดไฟล์หนึ่งตามสถานการณ์ของคอมพิวเตอร์ของคุณ ฉันเลือก hashcat64.bin เพื่อความสวยงาม ฉันเพิ่มบรรทัดลงในไฟล์ ~/.bashrc:

alias hashcat='เส้นทางของ hashcat64.bin '

หลังจากบันทึกแล้ว เปิดเทอร์มินัลเสมือนอีกครั้งเพื่อให้ไฟล์ ~/.bashrc มีผลบังคับใช้ ด้วยวิธีนี้ ไม่ว่าคุณจะอยู่ที่ไหน คุณสามารถป้อนคำสั่ง hashcat ได้โดยตรงโดยไม่ต้องสลับไดเร็กทอรีหรือป้อน "64.bin" ที่น่าเกลียด ดังแสดงในภาพด้านล่าง

ตอนนี้คุณสามารถเริ่มใช้ hashcat เพื่อระเบิดแฮชต่างๆ ได้แล้ว

1. การระเบิด md5

md5 ควรเป็นหนึ่งในฟังก์ชันแฮชที่มีชื่อเสียงและใช้กันอย่างแพร่หลายที่สุด ขั้นแรกให้ใช้ Python เพื่อสร้างค่า md5 หลายค่าสำหรับการระเบิด โค้ดมีดังนี้:

  import hashlib 
  รหัสผ่าน = ['123123', 'พันธบัตร007', 'xxxxxx', '*H@&(NT*@BR#^'] 
  สำหรับ รหัสผ่าน ใน รหัสผ่าน: 
    md5 = hashlib.md5() 
    md5.update(รหัสผ่าน) 
    print md5.hexdigest()

โค้ดข้างต้นคำนวณค่าแฮชของสตริงทั้งสี่ตามลำดับ ผลลัพธ์เอาต์พุตคือ:

  4297f44b13955235245b2497399d7a93 
  cbdb7e2b1ed566ceb796af2df07205a3 
dad3a37aa9d50688b5157698acfd7aee 
  d77db958c179bbffae04b2b908b75c26

บันทึกผลลัพธ์เอาต์พุตในไฟล์ md5.hash หนึ่งค่า hahs ต่อบรรทัด จากนั้นใช้ hashcat เพื่อระเบิดค่าแฮชเหล่านี้ คำสั่งมีดังนี้:

  hashcat -w 3 -a 0 -m 0 --remove -o md5.out md5.hash wordlist.dic

พารามิเตอร์ -w ใช้เพื่อระบุโหมดการทำงาน มีทั้งหมด 4 โหมด ดังที่แสดงในตารางด้านล่าง:

Nประสิทธิภาพรันไทม์การใช้พลังงานผลกระทบต่อเดสก์ท็อป
1ต่ำ2 msLowMinimal
2Default12 msEconomicNoticeable
3High96 msHighUnresponsive
4Nightmare480 msInsaneHeadless

พารามิเตอร์ -a ใช้เพื่อระบุโหมดการโจมตี ความหมายของ 0 คือ โดยตรงและต่อเนื่อง นั่นคือ การใช้พจนานุกรมรหัสผ่านเพื่อระเบิด มีค่า -a ห้าค่า ดังแสดงในตารางต่อไปนี้:

Nโหมด
0ตรง
1ชุดค่าผสม
3Brute-force
6Hybrid Wordlist + Mask
7Hybrid Mask + Wordlist

-m ใช้เพื่อระบุแฮชที่จะระเบิด ฟังก์ชันแฮชของค่า 0 หมายความว่าฟังก์ชันแฮชคือ md5 และค่าอื่นๆ แสดงในตารางต่อไปนี้:

NNameCategory
0MD5Raw Hash
300MySQL4.1/MySQL5เซิร์ฟเวอร์ฐานข้อมูล
1000NTLMระบบปฏิบัติการ
1800sha512crypt $6$, SHA512 (Unix)ระบบปฏิบัติการ
2611vBulletin < v3.8.5ฟอรัม, CMS, อีคอมเมิร์ซ, เฟรมเวิร์ก

ตารางนี้ยาวเกินไป ฉันจะแสดงเฉพาะฟังก์ชันแฮชสองสามฟังก์ชันที่เกี่ยวข้องในบทความนี้ คุณสามารถดูทั้งหมดได้โดยใช้พารามิเตอร์ – help ความหมายของ

พารามิเตอร์ – ลบคือหากค่าแฮชบางค่าถูกระเบิดสำเร็จ ค่าจะถูกลบออกจาก md5.hash

พารามิเตอร์ -o ตามด้วยชื่อไฟล์ที่ระบุตำแหน่งที่บันทึกผลลัพธ์การระเบิด

พารามิเตอร์สองตัวสุดท้ายคือ md5.hash และ wordlist.dic คือค่าแฮชและพจนานุกรมรหัสผ่านที่จะระเบิดตามลำดับ เนื้อหาใน md5.hash ได้รับการคำนวณโดย Python หากคุณไม่มีพจนานุกรมรหัสผ่านที่เหมาะสม คุณสามารถใช้คำสั่ง:

  wget -O wordlist.dic https://samsclass.info/123/proj10/500_passwords.txt

下载一个。现在完事具备,按下回车,结果华丽地报错:(

  clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR

อาจขาดสภาพแวดล้อมการทำงานบางอย่าง ดังนั้นให้ติดตั้ง ฉันติดตั้งสิ่งเหล่านี้ทั้งหมด:

  sudo apt-get install gcc make p7zip-full git lsb-core 
  wget http://registrationcenter-download.intel.com/akdlm/irc_nas/9019/opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz 
  tar -xvf opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz 
  ซีดี opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25 
  sudo ./install.sh

หากความเร็วอินเทอร์เน็ตดี จะปลอดภัยภายในระยะเวลาสั้นๆ คำสั่งแรกรายงานข้อผิดพลาด:

  /sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 คือ ไม่ใช่ เป็น สัญลักษณ์ ลิงก์ 
  /sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 คือ ไม่ใช่ เป็น ลิงก์เชิงสัญลักษณ์  

แต่ดูเหมือนว่าจะไม่ส่งผลกระทบต่อสิ่งใด ดังนั้นเพิกเฉยต่อมัน หลังจากติดตั้งสิ่งเหล่านี้แล้ว ให้กด Enter อีกครั้งเพื่อรันคำสั่งที่รายงานข้อผิดพลาดเดิม และพบว่าไม่มีการรายงานข้อผิดพลาดอีกครั้ง และการดำเนินการก็เสร็จสิ้นในชั่วพริบตา หลังจากดำเนินการคำสั่งแล้ว ให้ตรวจสอบเนื้อหาของไฟล์ md5.hash และ md5.out และพบว่าเหลือเพียงแฮชเดียวใน md5.hash แฮชทั้งสามที่ระเบิดสำเร็จได้ถูกโอนไปยังไฟล์ md5.out ใน md5.out มีค่าแฮชสามค่าและค่าดั้งเดิมดังแสดงในรูปด้านล่าง:

2. ระเบิดแฮชรหัสผ่านเข้าสู่ระบบ Windows7

ค่าแฮชของรหัสผ่านเข้าสู่ระบบ Windows จะถูกบันทึกไว้ในไฟล์ SAM SAM เป็นตัวย่อของ "security account manager" โดยปกติจะอยู่ที่

  C:\Windows\system32\config\SAM

ไฟล์ SAM ได้รับการปกป้องโดย Windows และไม่สามารถอ่านได้โดยตรง จำเป็นต้องใช้เครื่องมือ เช่น SAMInside ค้นหาเครื่องเสมือน Windows 7 สร้างผู้ใช้ผู้ดูแลระบบใหม่ชื่อ hashcat และตั้งค่ารหัสผ่าน ดาวน์โหลดและแตกการบีบอัด SAMInside ใน Windows 7 แล้วเรียกใช้สิทธิ์ของผู้ดูแลระบบ จากนั้นคลิก File-> Import Local Users vis Scheduler ดังแสดงในภาพด้านล่าง แสดง:

SAMInside อาจ "ไม่ตอบสนอง" หลังจากนั้น แต่ก็ไม่สำคัญ รอสักสองสามวินาทีอย่างอดทน SAMInside อ่านแฮชที่เราต้องการตามความคาดหวัง ดังแสดงในภาพด้านล่าง:

เลือกผู้ใช้ "hashcat" ที่เราต้องการระเบิดรหัสผ่าน กด Ctrl 5 เพื่อคัดลอก NT-hash จากนั้นกลับไปที่ Ubuntu ที่ติดตั้ง hashcat ใช้คำสั่งต่อไปนี้เพื่อบันทึกค่าแฮชที่คัดลอกไปยังไฟล์ win7.hash:

  echo<101x96> 
  hashcat -w 3 -a 0 -m 1000 --ลบ -o win7.out win7.hash wordlist.dic

ดำเนินการเสร็จสิ้นหลังจากผ่านไปครู่หนึ่ง ตรวจสอบไฟล์ win7.out และพบว่าการระเบิดประสบความสำเร็จ รหัสผ่านเข้าสู่ระบบของผู้ใช้ hashcat คือ rush2112:

  werner@Yasser:~/hashcat$ cat win7.out 
  356ceae0c89fb65ed6d6aa7a445c4ce5:rush2112

วิธีการรับไฟล์ SAM โปรดดูที่ "วิธีส่งออก Windows Hash Series 1" ต่อไปนี้บันทึกกระบวนการของฉันในการอ่านไฟล์ SAM ในเครื่องเสมือน Windows 7

หากเป็นเครื่องจริง ให้ใช้ Win PE เพื่อสตาร์ทเครื่องและอ่านไฟล์ SAM บนดิสก์ ของฉันเป็นเครื่องเสมือน และคุณสามารถอ่านไฟล์ในดิสก์เสมือนได้โดยการติดตั้งไฟล์ดิสก์เสมือนลงในระบบไฟล์ เครื่องเสมือนที่ฉันใช้คือ VirtualBox ซึ่งสามารถทำได้โดยใช้คำสั่ง vdfuse หากคุณไม่มี vdfuse คุณต้องติดตั้ง virtualbox-fuse ก่อน:

  sudo apt-get install virtualbox-fuse

คุณยังสามารถดาวน์โหลดแพ็คเกจการติดตั้ง virtualbox-fuse ได้ด้วยตัวเอง

หลังจากการติดตั้งเสร็จสิ้น คุณจะมีคำสั่ง vdfuse และคุณสามารถเริ่มการแมปและการติดตั้งดิสก์เสมือนได้:

  mkdir -p ~/vmdisk 
  sudo vdfuse -t vmdk -f Win7Pro32.vmdk ~/vmdisk/

หลังจากทำตามขั้นตอนนี้ ดูไดเร็กทอรี ~/vmdisk ซึ่งมีสามไฟล์: EntireDisk, Partition1 และ Partition2 สร้างไดเร็กทอรีใหม่:

  mkdir -p ~/vmdisk_en 
  mkdir -p ~/vmdisk_1 
  mkdir -p ~/vmdisk_2

ใช้คำสั่ง mount เพื่อติดตั้งไฟล์ทั้งสามของ EntireDisk, Partition1 และ Partition2 ตามลำดับ:

  sudo mount ~/vmdisk/EntireDisk   ~/vmdisk_en 
  sudo ติดตั้ง ~/vmdisk/พาร์ติชัน1   ~/vmdisk_1 
  sudo mount ~/vmdisk/Partition2   ~/vmdisk_2

พบว่าการติดตั้งดิสก์ทั้งหมดล้มเหลว เนื้อหาในพาร์ติชัน 1 ไม่ใช่สิ่งที่ฉันต้องการ และพาร์ติชัน 2 เป็นไฟล์จากเครื่องเสมือน Windows 7 ซึ่งเป็นสิ่งที่ฉันต้องการ คัดลอกไฟล์ SAM เป้าหมายของเราจาก vmdisk_fs:

  cp ~/vmdisk_2/Windows/System32/config/SAM ./

โดยวิธีการ คัดลอกไฟล์ระบบด้วย:

  cp ~/vmdisk_2/Windows/System32/config/SYSTEM ./

ดู เนื้อหาของไฟล์ SAM ดังแสดงในภาพด้านล่าง ไม่ใช่ไฟล์ข้อความธรรมดา แต่เป็นสไตล์ของ Windows จริงๆ

แม้ว่าไฟล์ SAM จะถูกเปิดสำเร็จ แต่เรายังไม่ได้รับแฮช เราควรทำอย่างไรต่อไป? คุณสามารถแยกวิเคราะห์เนื้อหาของไฟล์ SAM ด้วยความช่วยเหลือของเครื่องมือเท่านั้น ใส่ทั้งไฟล์ SAM และไฟล์ระบบลงใน Kali แล้วรันคำสั่ง:

  samdump2 -o sam.hash SYSTEM sam

จากนั้นดู sam.hash คุณยังสามารถดูค่าแฮชของรหัสผ่านเข้าสู่ระบบของผู้ใช้แต่ละรายได้ แต่ละบรรทัดในไฟล์ sam.hash เป็นผู้ใช้ และรูปแบบของแต่ละบรรทัดคือ:

   ชื่อผู้ใช้: RID: LM-hash value: NTLM-hash value 

โปรดทราบว่ารูปแบบนี้เป็นรูปแบบเอาต์พุตคำสั่ง samdump2 ไม่ใช่ "รูปแบบรหัสผ่านแฮชภายใต้ Windows"

3. ระเบิดแฮชรหัสผ่านเข้าสู่ระบบ linux

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

  sudo adduser justforfun

ค่าแฮชของรหัสผ่านเข้าสู่ระบบของผู้ใช้ใน linux จะถูกเก็บไว้ในไฟล์ /etc/shadow (หมายเหตุ: ไม่ใช่ /etc/passwd) ใช้คำสั่งต่อไปนี้เพื่อดูค่าแฮชของรหัสผ่านเข้าสู่ระบบของผู้ใช้ใหม่:

test@test-VirtualBox:~$ sudo tail -n 1 /etc/shadow 
justforfun:$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:17373:0:99999:7:::

คำสั่งหางใช้เพื่ออ่านสองสามบรรทัดสุดท้ายของไฟล์ ค่าเริ่มต้นคือ 10 บรรทัด และใช้พารามิเตอร์ -n เพื่อระบุจำนวนบรรทัด ผู้ใช้ใหม่ที่เราเพิ่งสร้างขึ้นจะอยู่ในบรรทัดสุดท้ายโดยธรรมชาติ ดังนั้นเราจึงใช้ tail -n 1 เพื่ออ่าน ผลลัพธ์ที่คุณอ่านคือข้อมูลที่แบ่งด้วย ":" ส่วนแรกคือชื่อผู้ใช้ "justforfun" ส่วนที่สองคือค่าแฮชของรหัสผ่าน ส่วนอื่น ๆ ไม่จำเป็นต้องกังวลในบทความนี้ เรามุ่งเน้นไปที่ส่วนที่สอง

"$6$" ขึ้นต้นด้วย

หมายถึงประเภทของฟังก์ชันแฮชที่ใช้คือ SHA-512 ยกเว้น "$6$" ใน linux "$1$" หมายถึง MD5, "$2a$" หมายถึง Blowfish, " $2y$" หมายถึง Blowfish (การจัดการอักขระ 8 บิตที่ถูกต้อง), "$5$" หมายถึง SHA-256 ดูรายละเอียดใน Wikipedia:passwd นอกจากนี้ไฟล์ /etc/login.defs ยังอธิบายอัลกอริธึมแฮชอีกด้วย

ส่วน "0fokwg59" ที่เริ่มต้นจาก "$6$" ไปจนถึงก่อน "$" ถัดไปคือเกลือ (SALT) เกลือคืออะไร? Baidu รู้ว่าคำตอบของ CNB2009 สำหรับคำถาม " ค่าเกลือ md5 คืออะไร" นั้นเรียบง่ายและเข้าใจง่าย:

พูดง่ายๆ ก็คือวิธีการทำให้รหัสผ่านเดียวกันมีค่าแฮชที่แตกต่างกัน หมายถึงการทำให้เกลือ MD5 นั้นไม่สามารถย้อนกลับได้ แต่ปัจจุบันมีฐานข้อมูลจำนวนมากบนอินเทอร์เน็ตที่รองรับการต่อต้านการสืบค้น หากฐานข้อมูลรหัสผ่านของผู้ใช้รั่วไหลโดยไม่ได้ตั้งใจ แฮกเกอร์สามารถรับรหัสผ่านของผู้ใช้ผ่านการต่อต้านการสืบค้น หรือรับรหัสแฮชที่ปรากฏบ่อยขึ้นในฐานข้อมูล (นั่นคือ ที่หลายๆ คนใช้) สำหรับการแคร็กแบบรุนแรง (เพราะมักจะเป็นรหัสผ่านที่อ่อนแอ) ค่าเกลือคือค่าสุ่มเพิ่มเติมที่เพิ่มในระหว่างกระบวนการแฮชรหัสผ่าน ตัวอย่างเช่น id ของฉันคือ 123456 และรหัสผ่านคือ 123456 เมื่อเก็บไว้ในฐานข้อมูล ฉันสามารถแฮชสตริง "123456/123456 ด้วยวิธีนี้ เมื่อมีรหัสผ่านโง่ๆ อีกรหัสคือ 123456 ก็ยังสามารถสร้างค่าแฮชที่แตกต่างกันและสามารถตรวจสอบได้สำเร็จ ในเวลานี้ id ของฉันจะถูกใช้เป็นค่าเกลือเพื่อแฮชรหัสผ่านที่ซับซ้อน แล้วไง. - บทบาทของค่าเกลือคือการลดความสูญเสียที่เกิดจากการรั่วไหลของฐานข้อมูล หาก RP ของคุณดีมากและเดาได้ถูกต้องว่ารหัสผ่านของฉันคือ 123456 ฉันไม่สามารถหยุดคุณได้

คำตอบสำหรับ md5 เช่นเดียวกับฟังก์ชันแฮชอื่นๆ ส่วนหลังเกลือคือค่าแฮช ตอนนี้คัดลอกส่วนที่สองทั้งหมดไปยังไฟล์ linux.hash เนื้อหาใน linux.hash ควรเป็น:

 $6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0

จากนั้นระเบิดแฮชรหัสผ่านการเข้าสู่ระบบ linux ด้วยคำสั่งต่อไปนี้:

  hashcat -w 3 -a 0 -m 1800 --remove -o linux.out linux.hash wordlist.dic

หลังจากนั้นไม่นาน การระเบิดก็เสร็จสิ้น ดูผลลัพธ์:

werner@Yasser:~/hashcat$ cat linux.out 
$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:4321

จะเห็นได้ว่าการระเบิดสำเร็จ

4. ระเบิดแฮชรหัสผ่านเข้าสู่ระบบ Mysql

ก่อนอื่น คุณต้องมี Mysql มันเกิดขึ้นในเครื่องเสมือนของฉัน Baidu รู้ว่าค่าแฮชของรหัสผ่านเข้าสู่ระบบ Mysql จะถูกบันทึกไว้ในไฟล์ user.MYD ไฟล์ user.MYD อยู่ที่ไหน? ฉันก็ไม่รู้เหมือนกัน ฉันแค่ค้นหามัน:

  test@test-VirtualBox:~$ sudo find / -name user.MYD 
  /var/lib/mysql/mysql/user.MYD

พบได้ที่ /var/lib/mysql/mysql/user.MYD ดูเนื้อหาของไฟล์:

  sudo cat /var/lib/mysql/mysql/user.MYD

ไม่ใช่ไฟล์ข้อความธรรมดา ความสัมพันธ์เพียงเล็กน้อย ยังคงเห็นว่าค่าแฮชของรหัสผ่านเข้าสู่ระบบรูทของผู้ใช้คือ:

  6B825255FB466413D6B1B724644E23428C94BBCB

บันทึกค่านี้ลงในไฟล์ mysql.hash ใช้คำสั่งต่อไปนี้เพื่อระเบิดแฮชรหัสผ่านเข้าสู่ระบบ mysql:

 {

}

หลังจากนั้นไม่นาน การระเบิดก็เสร็จสมบูรณ์ ดูผลลัพธ์:

  werner@Yasser:~/hashcat$ cat mysql.out 
  6b825255fb466413d6b1b724644e23428c94bbcb:viper

จะเห็นได้ว่าการระเบิดสำเร็จ

5. ระเบิด Discuz! รหัสผ่านฟอรั่ม

Discuz! เป็นโปรแกรมฟอรั่ม php ที่มีชื่อเสียงในประเทศของฉันและมีการใช้กันอย่างแพร่หลาย ตอนนี้มาระเบิด Discuz กันดีกว่า! ค่าแฮชของรหัสผ่านผู้ใช้ ก่อนอื่นเราต้องหาค่าแฮชก่อน จะหาได้ที่ไหน? แน่นอนจาก Discuz! ในฐานข้อมูล

สามารถอภิปรายได้! ฐานข้อมูลอยู่ที่ไหน? นี่คือวิธีที่ฉันแก้ปัญหา ดาวน์โหลด Discuz เวอร์ชันล่าสุดจากเว็บไซต์อย่างเป็นทางการ! ซอร์สโค้ด เรียกใช้และติดตั้ง แล้วคุณจะได้ Discuz! ฐานข้อมูล :smile:

Discuz! ชื่อฐานข้อมูลเริ่มต้นคือ ultrax และตาราง pre_ucenter_members จะเก็บค่าแฮชของรหัสผ่านเข้าสู่ระบบ "pre_" เป็นคำนำหน้าเริ่มต้นและสามารถเปลี่ยนแปลงได้ในระหว่างการติดตั้ง "ucenter_members" จะไม่เปลี่ยนแปลง ใช้คำสั่ง sql ต่อไปนี้เพื่อค้นหาค่าแฮชของรหัสผ่านเข้าสู่ระบบ:

  select password,salt from pre_ucenter_members; 

บันทึกค่าแฮชและค่าเกลือลงในไฟล์:

  echo 69bcba126b93c6f397983629a0f70553:c13fd9 > discuz.hash

ค่าแฮชและค่าเกลืออยู่ในแถวเดียวกัน แบ่งด้วย ":" สุดท้าย ใช้คำสั่งต่อไปนี้เพื่อระเบิดแฮชรหัสผ่านเข้าสู่ระบบ Discuz:

  hashcat -w 3 -a 0 -m 2611 --ลบ -o discuz.out discuz.hash wordlist.dic

หลังจากนั้นไม่นาน การระเบิดก็เสร็จสิ้น ดูผลลัพธ์:

  werner@Yasser:~/hashcat$ cat discuz.out 
  69bcba126b93c6f397983629a0f70553:c13fd9:winter

จะเห็นได้ว่าการระเบิดสำเร็จ

6. การทดสอบพจนานุกรมขนาดใหญ่

จนถึงตอนนี้ เราใช้พจนานุกรมขนาดเล็กที่มีเพียง 500 คำ และใช้เวลาเพียงชั่วครู่ในแต่ละครั้งเพื่อระเบิดแฮชต่างๆ ได้สำเร็จ คุณไม่คิดว่า แปลกเหรอ? นี่เป็นเพราะฉันจงใจตั้งรหัสผ่านที่อ่อนแอในพจนานุกรมเพื่อฝึกใช้ hashcat มิฉะนั้นมันจะไม่ทำให้ผู้คนรู้สึกแย่ถ้าพวกเขาไม่สามารถระเบิดได้ ในทางปฏิบัติมันเป็นไปไม่ได้ที่จะมีโชคดีเช่นนี้ ลองคำนวณค่า md5 ของรหัสผ่านที่อ่อนแอน้อยกว่าและระเบิดด้วยพจนานุกรมขนาดใหญ่ ลองเสี่ยงโชคในมือข้างหนึ่ง และดูว่า hashcat จะเร็วแค่ไหนในทางกลับกัน

คำนวณค่า md5 ก่อน:

  นำเข้า แฮชลิบ 
  md5 = แฮชลิบ.md5() 
  md5.update("werner123456!!!") 
  พิมพ์ md5.hexdigest()

เอาต์พุตคือ:

  b17133f9abff287ed0546c1af2b171f7

จากนั้นเลือกพจนานุกรมขนาด 10.5G ที่มีรหัสผ่าน 940 ล้านรหัส เริ่มระเบิด:

  hashcat -w 3 -a 0 -m 0 --remove -o big.out b17133f9abff287ed0546c1af2b171f7 big.dic

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

  เริ่ม: พุธ ก.ค. 26 22:55:27 2017 
  หยุด: พุธ ก.ค. 26 23:02:28 2017

ปรากฎว่าใช้เวลาเพียง 7 นาที! ฉันคิดว่าจะใช้เวลา 7 ชั่วโมง ซึ่งเร็วกว่าที่ฉันคาดไว้ 60 เท่า! น่าเสียดายที่ค่าแฮชไม่สามารถระเบิดได้สำเร็จ ดูเหมือนว่า "werner123456!!!" ไม่อยู่ในพจนานุกรมรหัสผ่าน ดูเหมือนว่าฉันจะต้องเตรียมพจนานุกรมรหัสผ่าน 100G แต่ไม่สะดวกมากที่จะบันทึกและถ่ายโอนพจนานุกรมขนาดใหญ่เช่นนี้ ไม่มีทางอื่นเหรอ? แน่นอน จำโหมดการโจมตีได้ไหม? เราใช้โหมด "ตรง" ต่อไปเรามาดูโหมดอื่น ๆ กัน

7. สรุป

เมื่อใช้ hashcat เพื่อระเบิดแฮช สิ่งแรกคือการค้นหาแฮชที่ถูกต้อง ระบบที่แตกต่างกันและซอฟต์แวร์ที่แตกต่างกันจะจัดเก็บแฮชในตำแหน่งที่แตกต่างกัน ดังนั้นคุณจึงจำเป็นต้องค้นหาแฮชอย่างแม่นยำ ค่ามา; ประการที่สองคือการกำหนดประเภทแฮชอย่างถูกต้อง พิจารณาว่า hashcat รองรับแฮชประเภทนี้หรือไม่ และเลือกพารามิเตอร์ -m ที่ถูกต้อง มิฉะนั้นแทบจะเป็นไปไม่ได้เลยที่จะประสบความสำเร็จ ประการที่สามคือพจนานุกรมรหัสผ่านจะดีกว่าไม่ว่าจะสามารถระเบิดได้สำเร็จในที่สุดก็ขึ้นอยู่กับพจนานุกรม แม้ว่าพจนานุกรมรหัสผ่านจะไม่ใหญ่เท่าไหร่ก็ยิ่งดี แต่ก็ยังดีกว่าเสมอ hashcat ยังเป็นที่รู้จักในเรื่องความเร็ว พจนานุกรมขนาดใหญ่ไม่ใช่ปัญหาสำหรับ hashcat นี่คือพจนานุกรมที่ดีกว่า: ประตูการรั่วไหลก่อนหน้านี้ + คอลเลกชันพจนานุกรมรหัสผ่านที่อ่อนแอที่ใช้กันทั่วไป 7Z รหัสผ่านการบีบอัดคือ: anywlan นอกจากนี้ หากคุณรวบรวมพจนานุกรมขนาดเล็กจำนวนมาก คุณสามารถรวม เรียงลำดับ และขจัดความซ้ำซ้อนของพจนานุกรมขนาดเล็กเพื่อให้ได้พจนานุกรมขนาดใหญ่สำหรับการระเบิด hashcat หากพจนานุกรมขนาดเล็กอยู่ในไดเร็กทอรีเดียวกัน คุณสามารถทำได้โดยใช้คำสั่งเดียว:

    cat * |  เรียงลำดับ | uniq > Merge.dic

จะเกิดอะไรขึ้นหากพจนานุกรมขนาดเล็กถูกจัดระเบียบตามหมวดหมู่และกระจายในไดเร็กทอรีหลายชั้น? เห็นได้ชัดว่าการใช้คำสั่ง cat เพียงอย่างเดียวไม่เพียงพอ แต่จริงๆ แล้วต้องใช้คำสั่งเดียวเท่านั้น สมมติว่าพจนานุกรมขนาดเล็กทั้งหมดถูกจัดเก็บไว้ในไดเร็กทอรี MyDictionary คำสั่งสามารถเขียนได้ดังนี้:

    find ./MyDictionary -type f -exec cat {} \;  | เรียงลำดับ | uniq > Merge.dic

ก่อนหน้านี้:ไฟล์ที่เข้ารหัสประเภทใดที่สามารถแก้ไขได้โดย Document Password Recovery Master ต่อไปนี้เป็นไฟล์รูปแบบที่รองรับการแคร็ก
ถัดไป:โหมดการโจมตีต่างๆของแมวแฮชแฮช

บทความล่าสุด

บทความติดหนึบ

  • มุ่งเน้นไปที่ Word, Excel, PPT, PDF, RAR, ZIP, 7Z, แพ็คเกจบีบอัด, ไฟล์ที่เข้ารหัส Office ปลดล็อคและถอดรหัส
  • เรามอบการกู้คืนรหัสผ่านแพ็คเกจไฟล์ที่ถูกบีบอัดคุณภาพสูงให้กับผู้ใช้ การปลดล็อค PDF และการกู้คืนรหัสผ่าน Word
  • ลิขสิทธิ์ © ต้นแบบการกู้คืนรหัสผ่านเอกสาร แพลตฟอร์มถอดรหัสออนไลน์