Hashcat เป็นเครื่องมือระเบิดรหัสผ่านและเป็นหนึ่งในเครื่องมือที่จำเป็นสำหรับความปลอดภัยของข้อมูล ฉันรวบรวมบทความนี้เพื่อบันทึกและสรุปในกรณีฉุกเฉิน นอกจากนี้ ยังอาจช่วยชาวเน็ตที่อ่านบทความนี้ได้อีกด้วย
Hashcat เป็นโปรแกรมถอดรหัสรหัสผ่านที่เร็วที่สุดในโลก เป็นเครื่องมือแบบกระจายแบบโอเพ่นซอร์สที่รองรับหลายแพลตฟอร์มและหลายอัลกอริธึม
อย่างเป็นทางการ: https://hashcat.net/hashcat/
Github:https://github.com/hashcat/hashcat
https://github.com/hashcat/hashcat/releases 下载最新版压缩包,解压根据自己的平台运行 hashcat64.exe 或者 hashcat32.exe
ระบุประเภทแฮชที่จะแคร็ก ตามด้วยหมายเลขที่สอดคล้องกับประเภทแฮช
ระบุโหมดแคร็กที่จะใช้ ค่าของมันอ้างอิงพารามิเตอร์ต่อไปนี้:
- [ Attack Modes ] - # | โหมด ===+====== 0 | ตรง # ตรงพจนานุกรมแตก 1 | ชุดค่าผสม # ชุดแตก 3 | บังคับโหด # หน้ากากบังคับแคร็ก 6 | ไฮบริด รายการคำ + หน้ากาก # พจนานุกรม+หน้ากากแตก 7 | ไฮบริด หน้ากาก + รายการคำ # หน้ากาก+พจนานุกรมแคร็ก
เปิดใช้งานโหมดแคร็กส่วนเพิ่ม และอนุญาตให้ hashcat ดำเนินการแคร็ก
ความยาวขั้นต่ำของรหัสผ่านภายในช่วงความยาวรหัสผ่านที่ระบุ ตามด้วยจำนวนเต็มโดยตรง กำหนดค่าโหมดเพิ่มเพื่อใช้
ความยาวสูงสุดของรหัสผ่าน ตามด้วยจำนวนเต็มโดยตรง กำหนดค่าโหมดเพิ่มเพื่อใช้
ละเว้นข้อความเตือนระหว่างกระบวนการแคร็ก
ลบแฮชที่ถอดรหัสสำเร็จ{
}
--outfile ระบุแฮชที่ถอดรหัสสำเร็จและตำแหน่งจัดเก็บรหัสผ่านข้อความธรรมดาที่เกี่ยวข้อง
--optimized-kernel-enable เปิดใช้งานเคอร์เนลที่ปรับให้เหมาะสม (จำกัดความยาวรหัสผ่าน)
--opencl-devices ระบุอุปกรณ์ของ opencl รายการอุปกรณ์ที่ฉันรองรับที่นี่มีดังนี้:
รหัส
* อุปกรณ์ #1: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz, ข้าม * อุปกรณ์ #2: Intel(R) UHD กราฟิก 630, 384/1536 MB จัดสรรได้, 24MCU * อุปกรณ์ #3: AMD Radeon Pro 555X คำนวณ เครื่องยนต์, 1024/4096 MB จัดสรรได้, 12MCU
--opencl-device-types ระบุประเภทอุปกรณ์ของ opencl Hashcat รองรับประเภทอุปกรณ์ต่อไปนี้:
bash
1 | CPU2 | GPU3 | FPGA, DSP, Co-Processor
ที่ใช้กันทั่วไป -D 2 ระบุ GPU crack
bash
? | ชุดอักขระ===+==
l | abcdefghijklmnopqrstuvwxyz # ตัวอักษรตัวพิมพ์เล็ก a-z
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ # ตัวพิมพ์ใหญ่ A-Z
d | 0123456789 # หมายเลข 0-9
h | 0123456789abcdef # ตัวเลข + abcdef
H | 0123456789ABCDEF # ตัวเลข + ABCDEF
s | ! "#$%&'()*+,-./:; <=>? @[\]^_`{|}~ # อักขระพิเศษ
a | ? ล? คุณ? ง? s # อักขระทั้งหมดที่มองเห็นได้บนแป้นพิมพ์
b | 0 - 0xff # อาจเป็น bash
- custom-charset1 [chars] เทียบเท่ากับ -1 --custom-charset2 [chars] เทียบเท่ากับ -2 --custom-charset3 [chars] เทียบเท่ากับ -3 --custom-charset4 [chars] เทียบเท่ากับ -4
โดยใช้ ในมาสก์? 1、? 2、? 3、? 4 เพื่อแสดง
บางกรณี:
bash
--custom-charset1 abcd123456! @-+
ณ เวลานี้? 1 หมายถึง abcd123456! @-+
bash
--ชุดตัวอักษรที่กำหนดเอง2 ? ล? d
ในเวลานี้? 2 หมายถึง ? ล? d คือ ? h ตัวเลข + ตัวอักษรตัวพิมพ์เล็ก:
bash
-3 abcdef -4 123456
เวลานี้ ? 3? 3? 3? 3? 4? 4? 4? 4 แสดงว่าสี่หลักแรกอาจเป็น abcdef และสี่หลักสุดท้ายอาจเป็น 123456
รหัส
1q2w3e4r` ค่า MD5 คือ `5416d7cd6ef195a0f7622a9c56b55e84
bash
hashcat -a 0 -m 0 '5416d7cd6ef195a0f7622a9c56b55e84' hashpass.txt -o success.txt
บางครั้งข้อความแจ้งต่อไปนี้จะปรากฏขึ้นเมื่อถอดรหัส:
รหัส
ข้อมูล: ทั้งหมด แฮช พบ ใน potfile! ใช้ --แสดง เพื่อ แสดง พวกเขา
นี่แสดงให้เห็นว่าเราถอดรหัสรหัสผ่านสำเร็จมาก่อน ดังนั้น hashcat จึงไม่แสดงอีกต่อไป คุณสามารถเพิ่มพารามิเตอร์ --show ในภายหลังเพื่อแสดงรหัสผ่าน:
bash
hashcat -a 0 -m 0 'cbc8f5435c87e13c5d14e6ce92358d68' hashpass.txt --แสดง cbc8f5435c87e13c5d14e6ce92358d68:123456@abc
ตำแหน่งที่ hashcat จัดเก็บไฟล์รหัสผ่านที่ถอดรหัสสำเร็จคือ: ~/.hashcat/hashcat.potfile
หากคุณต้องการแสดงรหัสผ่านที่ถอดรหัสโดยตรง คุณสามารถลบได้โดยตรง ไฟล์.
แบช
# ลบบันทึกการแคร็กที่ประสบความสำเร็จก่อนหน้านี้ rm ~/.hashcat/hashcat.potfile# hash.txt คือรหัสผ่านที่จะแคร็ก hashpass.txt คือพจนานุกรม ส่งออกผลลัพธ์ของการแคร็กไปยัง success.txt และลบ hashcat ที่แคร็กสำเร็จจาก hash.txt -a 0 -m 0 hash.txt hashpass.txt -o success.txt --ลบ
bash
hashcat -a 1 -m{พจนานุกรม + หน้ากากแตก
bash
echo -n admin888 |openssl md5 7fef6171469e80d32c0559f88b377245ถอดรหัสค่า MD5 ของ admin888 :
bash
hashcat -a 6 -m 0 '7fef6171469e80d32c0559f88b377245' hashpass.txt -Oหน้ากาก + พจนานุกรมแตก
bash
hashcat -a 7 -m 0 '7fef6171469e80d32c0559f88b377245' 'admi? ล? ง? ง? d' hashpass.txt -Oกรณีแคร็ก
แคร็กดิจิทัลของการเข้ารหัส MD5 8 บิต
ถึง 23323323 ทำการเข้ารหัส MD5:
bash
$ echo -n 23323323 |openssl MD5 5a745e31dbbd93f4c86d1ef82281688bใช้ hashcat ในการแคร็ก:
bash
hashcat -a 3 -m 0 --force '5a745e31dbbd93f4c86d1ef82281688b' '? ง? ง? ง? ง? ง? ง? ง? d' -Oแคร็กตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กที่เข้ารหัส MD5 8 บิต
bash
$ echo -n รหัสผ่าน |openssl MD5 a9d402bfcde5792a8b531b3a82669585ใช้ hashcat ในการแคร็ก:
bash
hashcat -a 3 -m 0 -1 '? ล? u' --บังคับ 'a9d402bfcde5792a8b531b3a82669585' '? 1? 1? 1? 1? 1? 1? 1? 1' -Oมีการกำหนดกฎที่กำหนดเอง -1 ในเวลานี้ ? 1 หมายถึง ? ล? u ซึ่งเป็นตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
ตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กที่เข้ารหัส MD5 5-7 หลัก + การแตกตัวเลข
Admin88 มีค่า MD5 สำหรับ 2792e40d60bac94b4b163b93566e65a9
bash
hashcat -a 3 -m 0 -1 '? ล? คุณ? d' --force '2792e40d60bac94b4b163b93566e65a9' --increment --increment-min 5 --increment-max 7 '? 1? 1? 1? 1? 1? 1? 1' -Oมีการกำหนดกฎที่กำหนดเอง -1 ในเวลานี้ ? 1 หมายถึง ? ล? คุณ? d คือ ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก + ตัวเลข
admin ตัวอักษรตัวพิมพ์ใหญ่และตัวเล็ก 10 หลักที่เข้ารหัส MD5 + ตัวเลขแตก ค่า MD5 ของ
admin23323 คือ a9991129897a44e0d1c2855c3d7dccc4
bash
hashcat -a 3 -m 0 -1 '? ล? คุณ? d' --บังคับ 'a9991129897a44e0d1c2855c3d7dccc4' 'ผู้ดูแลระบบ? 1? 1? 1? 1? 1' -OMySQL4.1/MySQL5
ดูรหัสผ่านสำหรับ MySQL:
mysql
mysql> select Password from mysql.user; +-------------------------------------------+ | รหัสผ่าน | +-------------------------------------------+ | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +-------------------------------------------+ 4 แถว ใน set (0.00 วินาที)จากนั้นเริ่มใช้พจนานุกรมแตก:
bash
hashcat -a 0 -m 300 --force '81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' hashpass.txt -OLinux /etc/shadow sha512crypt $6$, SHA512 (Unix)
ดูไฟล์รหัสผ่าน /etc/shadow :
bash
root@kali-linux:~# cat /etc/shadowroot:$6$4ojiBMDPrehqrLkX$d2T7Cn8LKkLk4SDXgCh1IEqjhnsUekXaNUXSxiZIwUTndSqyd.9sEcu80sX9DuEHGmHOeoMev2O0ACYtjMett1:18201:0:999999:7::: ปีศาจ:*:18024:0:99999:7::: ถังขยะ:*:18024:0:99999:7::: ระบบ:*:18024:0:99999:7::: ซิงค์:*:18024:0:99999:7::: เกมส์:*:18024:0:99999:7::: ผู้ชาย:*:18024:0:99999:7::: แอลพี:*:18024:0:99999:7::: เมล์:*:18024:0:99999:7::: ข่าว:*:18024:0:99999:7::: uucp:*:18024:0:99999:7::: พร็อกซี:*:18024:0:99999:7::: www-ข้อมูล:*:18024:0:99999:7::: สำรองข้อมูล:*:18024:0:99999:7::: รายการ:*:18024:0:99999:7::: irc:*:18024:0:99999:7::: แมลงวัน:*:18024:0:99999:7::: ไม่มีใคร:*:18024:0:99999:7::: _apt:*:18024:0:99999:7::: ระบบซิงค์เวลา:*:18024:0:99999:7::: ระบบเครือข่าย:*:18024:0:99999:7::: ระบบแก้ไข:*:18024:0:99999:7::: mysql:!: 18024:0:99999:7::: ntp:*:18024:0:99999:7::: ข้อความบัส:*:18024:0:99999:7::: arpwatch:!: 18024:0:99999:7::: เดเบียน-เอ็กซิม:!: 18024:0:99999:7::: uuidd:*:18024:0:99999:7::: ถุงเท้าแดง:!: 18024:0:99999:7::: tss:*:18024:0:99999:7::: rwhod:*:18024:0:99999:7::: ไอโอดีน:*:18024:0:99999:7::: มิเรโด:*:18024:0:99999:7::: dnsmasq:*:18024:0:99999:7::: โพสต์เกรส:*:18024:0:99999:7::: usbmux:*:18024:0:99999:7::: rtkit:*:18024:0:99999:7::: ตะลึง4:!: 18024:0:99999:7::: sshd:*:18024:0:99999:7::: เดเบียน-snmp:!: 18024:0:99999:7::: sslh:!: 18024:0:99999:7::: ชีพจร:*:18024:0:99999:7::: speech-dispatcher:!: 18024:0:99999:7::: อวาฮี:*:18024:0:99999:7::: ซาเนด:*:18024:0:99999:7::: อิเนตซิม:*:18024:0:99999:7::: สี:*:18024:0:99999:7::: geoclue:*:18024:0:99999:7::: คิงฟิชเชอร์:*:18024:0:99999:7::: เดเบียน-gdm:*:18024:0:99999:7::: ดราดิส:*:18024:0:99999:7::: เนื้อ-xss:*:18024:0:99999:7::: systemd-coredump:!!: 18082:คุณจะเห็นว่า root มีรหัสผ่าน วิธีการเข้ารหัสที่ใช้ก่อนหน้านี้คือ $6 แฮชพื้นผิวคือ: sha512crypt $6 $, SHA512 (Unix)
บาช
# มาสก์แคร็กรหัสผ่านรูท ไม่บันทึกแฮชที่ถอดรหัสสำเร็จ ใน potfile ระบุอุปกรณ์ 2 (จอแสดงผลหลัก) เพื่อเรียกใช้รหัสผ่าน และเปิดการเพิ่มประสิทธิภาพ hashcat -a 3 -m 1800 --force '$6$4ojiBMDPrehqrLkX$d2T7Cn8LKkLk4SDXgCh1IEqjhnsUekXaNUXSxiZIwUTndSqyd.9sEcu80sX9DuEHGmHOeoMev2O0ACYtjMett1' '? ล? ล? ล? l' -O -d 2 --potfile-disable# หน้ากากถอดรหัสรูท ละเว้นชื่อผู้ใช้ ไม่บันทึกแฮชที่ประสบความสำเร็จใน potfile ระบุอุปกรณ์ 2 (จอแสดงผลหลัก) เพื่อเรียกใช้รหัสผ่าน และเปิดการเพิ่มประสิทธิภาพ hashcat -A 3 -m 1800 --force ' root:$6$4ojiBMDPrehqrLkX$d2T7Cn8LKkLk4SDXgCh1IEqjhnsUekXaNUXSxiZIwUTndSqyd.9sEcu80sX9DuEHGmHOeoMev2O0ACYtjMett1' '? ล? ล? ล? l' -O -d 2 --username --potfile-disableCPU ในตัวและกราฟิกอิสระที่มาพร้อมกับ macOS ไม่สามารถถอดรหัสได้ ที่นี่ Guoguang เองสลับไปที่ -d 2 ด้วยตนเองเพื่อใช้จอแสดงผลหลักก่อนที่จะรันออกมาได้สำเร็จ:
พจนานุกรมถอดรหัส Windows LM Hash
bash
hashcat -a 0 -m 3000 --force '921988ba001dc8e14a3b108f3fa6cb6d' password.txtพจนานุกรมแคร็ก Windows NTLM Hash
bash
hashcat -a 0 -m 1000 --force 'e19ccf75ee54e06b06a5907af13cef42' password.txtDistributed crack
| parameters | type | description | ความเข้าใจของ Guoguang | example |
|---|---|---|---|---|
| – brain-server | เปิดใช้งานเซิร์ฟเวอร์สมอง | เปิดใช้งานเซิร์ฟเวอร์หลัก | -z, –brain-client | เปิดใช้งานไคลเอนต์สมอง, เปิดใช้งาน -S | เปิดใช้งานไคลเอนต์แบบกระจาย |
| –brain-client-features | Num | กำหนดคุณสมบัติไคลเอนต์สมอง ดูด้านล่าง | กำหนดฟังก์ชันไคลเอนต์ | –brain-client-features=3 |
| –brain-host | Str | โฮสต์เซิร์ฟเวอร์สมอง (IP หรือโดเมน) | IP หรือโดเมนของเซิร์ฟเวอร์หลัก | –brain-host=127.0.0.1 |
| – พอร์ตสมอง | พอร์ต | พอร์ตเซิร์ฟเวอร์สมอง | พอร์ตเซิร์ฟเวอร์หลัก | –brain-port=13743 |
| –brain-password | Str | รหัสผ่านการรับรองความถูกต้องของเซิร์ฟเวอร์สมอง | รหัสผ่านการรับรองความถูกต้องของเซิร์ฟเวอร์หลัก | –brain-password=e8acfc7280c48009 |
| –brain-session | Hex | แทนที่เซสชันสมองที่คำนวณโดยอัตโนมัติ | เขียนทับเซสชันหลักที่คำนวณโดยอัตโนมัติ | –brain-session=0x2ae611db |
| –brain-session-whitelist | Hex | อนุญาตเฉพาะเซสชันที่กำหนด คั่นด้วยเครื่องหมายจุลภาค | อนุญาตเฉพาะการสนทนาที่กำหนด คั่นด้วยเครื่องหมายจุลภาค | –brain-session-whitelist=0x2ae611db |
bash
- [ สมอง ไคลเอนต์ คุณสมบัติ ] - # | คุณสมบัติ ===+======== 1 | ส่ง hashed passwords # ส่งรหัสผ่านที่ถอดรหัส 2 | ส่ง โจมตี ตำแหน่ง 3 | ส่ง แฮช รหัสผ่าน และ โจมตี ตำแหน่ง # ส่งรหัสผ่านที่ถอดรหัสและตำแหน่งที่ถอดรหัส