CyberChef คือ 'Cyber Swiss-Army Knife' ที่อ้างตัวเองซึ่งสร้างโดย GCHQ เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการแปลงข้อมูล การดึงข้อมูล และการจัดการบนเว็บเบราว์เซอร์ของคุณ
เครดิตเต็มให้กับ @GCHQ สำหรับการผลิตเครื่องมือ ดู: https://gchq.github.io/CyberChef/
การเรียนรู้นิพจน์ทั่วไปเป็นกุญแจสำคัญในการใช้ประโยชน์สูงสุดจากการจัดการข้อมูลใน CyberChef (หรืองาน DFIR ใดๆ) ด้านล่างนี้คือ regex บางส่วนที่ฉันกลับมาดูเรื่อยๆ
แยก Base64: [a-zA-Z0-9+/=]{30,}
แยกเลขฐานสิบหก: [a-fA-F0-9]{10,}
แยกรหัสอักขระ: [d]{2,3}(,|')
(?<=foo)(.*)
^.*(?=bar)
(?<=')(.*?)(?=')
CyberChef ให้การดำเนินการคำขอ HTTP (ดูสูตร 22) ซึ่งอนุญาตคำขอ HTTP ไปยังทรัพยากรภายนอก เนื่องจากนโยบายแหล่งกำเนิดเดียวกัน (SOP) หรือการขาดการกำหนดค่าการแชร์ทรัพยากรข้ามแหล่งกำเนิด หลายๆ รายการจึงใช้งานไม่ได้ SOP คือมาตรการรักษาความปลอดภัยในเบราว์เซอร์สมัยใหม่ที่ป้องกันไม่ให้คุณอ่านการตอบกลับข้ามไซต์จากเซิร์ฟเวอร์ที่ไม่อนุญาตให้ใช้ CORS อย่างชัดเจน ดูการพูดคุยของ @GlassSec เกี่ยวกับ CyberChef ซึ่งรวมถึงเคล็ดลับในการบูต Chrome โดยไม่มีความปลอดภัยทางเว็บ เพื่อเปิดใช้งานคำขอ HTTP ไปยัง API ที่ถูกจำกัดอย่างอื่น (เช่น Virus Total)
ตัวอย่างสูตรอาหาร CyberChef:
สูตรที่ 1: สกัด base64 ขยายและตกแต่งให้สวยงาม
สูตรที่ 2: เรียกความสับสน
สูตรที่ 3: จาก CharCode
สูตรที่ 4: การถอดรหัสรหัสผ่านการตั้งค่านโยบายกลุ่ม
สูตรที่ 5: การใช้ลูปและป้ายกำกับ
สูตรที่ 6: การประทับเวลาของ Google ei
สูตรที่ 7: สคริปต์เล็ต COM แบบหลายขั้นตอนถึงชุดประกอบ x86
สูตรที่ 8: แยกเลขฐานสิบหก แล้วแปลงเป็นไฟล์ hexdump สำหรับไฟล์ PE ที่ฝัง
สูตรที่ 9: การย้อนกลับสตริง การทดแทนอักขระ จาก base64
สูตรที่ 10: แยกวัตถุออกจากแคชพร็อกซี Squid
สูตรที่ 11: แยกพิกัด GPS ไปยัง URL ของ Google Maps
สูตรที่ 12: การประมวลผลจำนวนมาก
สูตรที่ 13: การแยกวิเคราะห์ระเบียน DNS PTR ด้วย Registers
สูตรที่ 14: การถอดรหัสโปรแกรมปฏิบัติการ POSHC2
สูตรที่ 15: การแยกวิเคราะห์การประทับเวลา $MFT $SI
สูตรที่ 16: การถอดรหัส PHP gzinflate และ webshells base64
สูตรที่ 17: การแยกเชลล์โค้ดออกจากสคริปต์ Powershell Meterpreter Reverse TCP
สูตรที่ 18: Recycle Bin Parser พร้อมส่วนย่อยและการผสาน
สูตรที่ 19: ระบุ Base64 ที่สับสนด้วยการเน้นนิพจน์ปกติ
สูตรที่ 20: การใช้กฎของ Yara กับสคริปต์ที่เป็นอันตรายที่ไม่ซับซ้อน
สูตรที่ 21: การถอดรหัสซอร์สโค้ดที่สร้างความสับสนแบบอินไลน์ของสคริปต์ VBE ที่เข้ารหัส hex ที่แนบกับไฟล์ LNK ที่เป็นอันตราย
สูตรที่ 22: ค้นหา JA3 API ด้วยคำขอ HTTP และการลงทะเบียน
สูตรที่ 23: การเอาชนะ DOSfuscation ที่ฝังอยู่ในไฟล์ DOC ที่เป็นอันตรายด้วยกลุ่มการจับนิพจน์ปกติ
สูตรที่ 24: สุ่มเลือกตัวอักษรจากสตริงหกไบต์
สูตรที่ 25: การสร้างรหัส QR Wifi
สูตรที่ 26: การแยกและถอดรหัส Webshell PHP แบบหลายขั้นตอน
สูตรที่ 27: การถอดรหัสสคริปต์ PHP ของผู้เยี่ยมชมอัตโนมัติ
สูตรที่ 28: การลดความสับสนของ Cobalt Strike Beacon โดยใช้การกระโดดแบบมีเงื่อนไขเพื่อรับเชลล์โค้ด
สูตรที่ 29: การจัดการเวลาประทับของไฟล์บันทึกด้วยส่วนย่อยและรีจิสเตอร์
สูตรที่ 30: CharCode ทำให้ PowerShell Loader สับสนสำหรับสัญญาณ Cobalt Strike
สูตรที่ 31: ถอดรหัสสตริงที่เข้ารหัสที่สร้างความสับสนใน .NET binary
สูตรที่ 32: แยก Gootkit DLL ที่เป็นอันตรายออกจากข้อมูลรีจิสทรีที่สับสน
สูตรที่ 33: ระบุ URL ที่ฝังในสคริปต์ Emotet PowerShell
สูตรที่ 34: การวิเคราะห์ไฟล์ OOXML สำหรับ URL
สูตรที่ 35: การถอดรหัสตัวอย่างแรนซัมแวร์ REvil PowerShell
สูตรที่ 36: สร้างเครื่องมือสร้างรหัสผ่าน CyberChef
สูตรที่ 37: จากอีเมลที่ซิป Sandbox ไปจนถึง URL ที่เป็นอันตราย
สูตรที่ 38: เครื่องบิน กะโหลก และซองจดหมาย - ใช้ชีวิตและปล่อยให้ PowerShell
สูตรที่ 39: ถอดรหัส GoldMax หรือที่เรียกว่าไฟล์การกำหนดค่าที่เข้ารหัส Sunshutte
สูตรที่ 40: ความบ้าคลั่งรหัสมอร์ส
สูตรที่ 41: PHP ผสมการเข้ารหัสเลขฐานสิบหกและฐานแปด
สูตรที่ 42: PHP Webshell ที่มีการซ้อนเลเยอร์
สูตรที่ 43: การถอดรหัสความสับสนของ Magento skimmer
สูตรที่ 44: การถอดรหัส JobCrypter Ransomware
สูตรที่ 45: การแปลงการประทับเวลาบันทึกพร็อกซี Sqiud
สูตรที่ 46: การปรับแต่ง regex ให้เข้ากับสถานการณ์
สูตรที่ 47: สคริปต์ Trickbot Visual Basic
สูตร 48: vjw0rm Emoji Madness
สูตรที่ 49: แยกไฟล์ทดสอบ EICAR
สูตร 50: เอาต์พุตภาษาคำจำกัดความของ Parse Security Descriptor
สูตร 51: ตัวถอดรหัส Base-45
สูตรที่ 52: สุ่มรายการสิ่งของ
สูตร 53: Olevba ส่งออกไปยัง Powershell
สูตรที่ 54: Windows Event ID 1029 แฮช
สูตร 55: Debofuscating BazarLoader หรือที่รู้จักในชื่อ TA551 maldoc
สูตรที่ 56: คำนวณและค้นหาค่าแฮช JA3 หรือ JA3S จาก PCAP
สูตรที่ 57: สร้างมีมด้วย CyberChef
สูตร 58: แยก URL ขั้นที่สองของ IcedID จาก maldoc
สูตร 59: การกำหนดค่าบีคอน Parse Cobalt Strike
สูตรที่ 60: ถอดรหัส URL ที่ป้องกันโดย Microsoft Safelinks
สูตรที่ 61: แยก URL ระยะที่สองจาก Qakbot Excel maldocs
สูตร 62: Emotet Maldoc เป็น PowerShell
สูตรที่ 63: แยก URL จาก VBS ที่ทำให้สับสนของ Dridex
สูตร 64: แปลงสตริงเป็นคำสั่ง VirusTotal Grep
สูตร 65: ลดความยุ่งเหยิงของ MSF Venom PowerShell เพย์โหลดเชลล์แบบย้อนกลับ
สูตรที่ 66: ตัวอย่างส่วนย่อยที่ซ้อนกัน
สูตรที่ 67: การแปลง MSI ProductCode เป็น ProductID ตัวติดตั้ง Registry
สูตรที่ 68: การแปลงอาร์เรย์ไบต์ที่ลงนามด้วย Java
สูตรที่ 69: แยกเพย์โหลด DLL ออกจากสคริปต์ Bumblebee Powershell
สูตรที่ 70: การแยกปลายทางออกจากการกำหนดค่าความปลอดภัยเครือข่าย Android
สถานการณ์ที่พบบ่อยมาก: แยก Base64, ขยาย, ตกแต่งโค้ด คุณอาจต้องดำเนินการเพิ่มเติมหรือวิเคราะห์แบบไดนามิก โดยขึ้นอยู่กับขั้นตอนต่อไป
ชื่อไฟล์: ahack.bat
ไฟล์ซิป: cc9c6c38840af8573b8175f34e5c54078c1f3fb7c686a6dc49264a0812d56b54_183SnuOIVa.bin.gz
ตัวอย่าง: SHA256 cc9c6c38840af8573b8175f34e5c54078c1f3fb7c686a6dc49264a0812d56b54
https://www.hybrid-analysis.com/sample/cc9c6c38840af8573b8175f34e5c54078c1f3fb7c686a6dc49264a0812d56b54?environmentId=120
[{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"Generic Code Beautify","args":[]}]
CyberChef จะไม่สามารถจัดการกับการวิงวอน-สร้างความสับสนได้ทุกประเภท แต่นี่คือประเภทที่สามารถถอดรหัสได้
ชื่อไฟล์: รับทราบ NUT-95-52619.eml
ไฟล์ซิป: 1240695523bbfe3ed450b64b80ed018bd890bfa81259118ca2ac534c2895c835.bin.gz
ตัวอย่าง: SHA256 1240695523bbfe3ed450b64b80ed018bd890bfa81259118ca2ac534c2895c835
https://www.hybrid-analysis.com/sample/1240695523bbfe3ed450b64b80ed018bd890bfa81259118ca2ac534c2895c835?environmentId=120
[{"op":"Find / Replace","args":[{"option":"Regex","string":"\^|\\|-|_|\/|\s"},"",true,false,true,false]},{"op":"Reverse","args":["Character"]},{"op":"Generic Code Beautify","args":[]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"http:"},"http://",true,false,true,false]},{"op":"Extract URLs","args":[false]},{"op":"Defang URL","args":[true,true,true,"Valid domains and full URLs"]}]
มัลแวร์และสคริปต์มักใช้ Charcode เพื่อแสดงอักขระเพื่อหลีกเลี่ยงจากโซลูชัน AV และ EDR CyberChef กินสิ่งนี้หมด
ชื่อไฟล์: 3431818-f71f60d10b1cbe034dc1be242c6efa5b9812f3c6.zip
ที่มา: https://gist.github.com/jonmarkgo/3431818
[{"op":"Regular expression","args":["User defined","([0-9]{2,3}(,\s|))+",true,true,false,false,false,false,"List matches"]},{"op":"From Charcode","args":["Comma",10]},{"op":"Regular expression","args":["User defined","([0-9]{2,3}(,\s|))+",true,true,false,false,false,false,"List matches"]},{"op":"From Charcode","args":["Space",10]}]
เมื่อมีการสร้าง GPP ใหม่ จะมีไฟล์ XML ที่เกี่ยวข้องซึ่งสร้างใน SYSVOL พร้อมด้วยข้อมูลการกำหนดค่าที่เกี่ยวข้อง และหากมีการให้รหัสผ่าน ไฟล์นั้นจะได้รับการเข้ารหัส AES-256 บิต Microsoft เผยแพร่คีย์ AES ซึ่งสามารถใช้เพื่อถอดรหัสรหัสผ่านที่เก็บไว้ใน: \SYSVOL<DOMAIN>Policies
เครดิต: @cyb3rops
ที่มา 1: https://twitter.com/cyb3rops/status/1036642978167758848
ที่มา 2: https://adsecurity.org/?p=2288
[{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hex","args":["None"]},{"op":"AES Decrypt","args":[{"option":"Hex","string":"4e9906e8fcb66cc9faf49310620ffee8f496e806cc057990209b09a433b66c1b"},{"option":"Hex","string":""},"CBC","Hex","Raw",{"option":"Hex","string":""}]},{"op":"Decode text","args":["UTF16LE (1200)"]}]
CyberChef สามารถใช้ป้ายกำกับเพื่อระบุส่วนของสูตร จากนั้นวนกลับเพื่อดำเนินการหลายครั้ง ในตัวอย่างนี้ มีการเข้ารหัส Base64 จำนวน 29 รอบซึ่งแยกและถอดรหัสแล้ว
เครดิต: @pmelson
ไฟล์ต้นฉบับ: hmCPDnHs.txt
ที่มา 1: https://pastebin.com/hmCPDnHs
ที่มา 2: https://twitter.com/pmelson/status/1078776229996752896
ดูตัวอย่างเพิ่มเติมของการวนซ้ำบน Base64: https://twitter.com/QW5kcmV3/status/1079095274776289280 (เครดิต: @ QW5kcmV3)
[{"op":"Label","args":["top"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"Jump","args":["top",28]},{"op":"Generic Code Beautify","args":[]}]
Google ใช้การประทับเวลาของตัวเอง ฉันเรียกว่า ei time ซึ่งฝังอยู่ใน URL
ที่มา: https://bitofhex.com/2018/05/29/cyberchef/
[{"op":"From Base64","args":["A-Za-z0-9-_=",true]},{"op":"To Hex","args":["None"]},{"op":"Take bytes","args":[0,8,false]},{"op":"Swap endianness","args":["Hex",4,true]},{"op":"From Base","args":[16]},{"op":"From UNIX Timestamp","args":["Seconds (s)"]}]
นี่คือสคริปต์เล็ต COM ถอดรหัสสิบเอ็ดขั้นตอนที่ใช้คำสั่ง Base64, Gunzip, RegEx และ Disassemble x86
เครดิต: @JohnLaTwC
ชื่อไฟล์: 41a6e22ec6e60af43269f4eb1eb758c91cf746e0772cecd4a69bb5f6faac3578.txt
แหล่งที่มา 1: https://gist.githubusercontent.com/JohnLaTwC/aae3b64006956e8cb7e0127452b5778f/raw/f1b23c84c65 4b1ea60f0e57a860c74385915c9e2/43cbbbf93121f3644ba26a273ebdb54d8827b25eb9c754d3631be395f06d8cff
ที่มา 2: https://twitter.com/JohnLaTwC/status/1062419803304976385
[{"op":"Regular expression","args":["","[A-Za-z0-9=/]{40,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Remove null bytes","args":[]},{"op":"Regular expression","args":["User defined","[A-Za-z0-9+/=]{40,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Gunzip","args":[]},{"op":"Regular expression","args":["User defined","[A-Za-z0-9+/=]{40,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hex","args":["Space"]},{"op":"Remove whitespace","args":[true,true,true,true,true,false]},{"op":"Disassemble x86","args":["32","Full x86 architecture",16,0,true,true]}]
ไฟล์นี้มีไฟล์ PE ฝังอยู่ (SHA 256: 26fac1d4ea12cdceac0d64ab9694d0582104b3c84d7940a4796c1df797d0fdc2, R5Sez8PH.exe, VT: 54/70) เมื่อใช้ CyberChef เราสามารถ regex เลขฐานสิบหกและแปลงเป็น hexdump ที่ดูได้ง่ายขึ้น
แหล่งที่มา 1: https://pastebin.com/R5Sez8PH (ขออภัย: ไม่มีให้บริการอีกต่อไป!)
ที่มา 2: https://twitter.com/ScumBots/status/1081949877272276992
[{"op":"Regular expression","args":["User defined","[a-fA-F0-9]{200,}",true,true,false,false,false,false,"List matches"]},{"op":"From Hex","args":["Auto"]},{"op":"To Hexdump","args":[16,false,false]}]
หยดของ base64 โดยมีไบต์รองบางส่วนที่จะถูกแทนที่ การถอดรหัสดั้งเดิมทำโดย @pmelson ใน Python และแปลงเป็น CyberChef
เครดิต: @pmelson
ที่มา 1: https://pastebin.com/RtjrweYF / RtjrweYF.txt
ที่มา 2: https://twitter.com/pmelson/status/1076893022758100998
[{"op":"Reverse","args":["Character"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"%"},"A",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"×"},"T",true,false,false,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"÷"},"V",true,false,false,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hexdump","args":[16,false,false]}]
อย่าแกะสลักวัตถุแคช Squid ของคุณด้วยตนเอง เพียงอัปโหลดไฟล์ไปที่ CyberChef สูตรนี้จะค้นหาไบต์วิเศษ 0x0D0A0D0A แล้วแยกทุกอย่างหลังจากนั้น จากนั้น gzip จะขยายขนาดวัตถุเพื่อดาวน์โหลด
ที่มา: 00000915 (เอาต์พุตควรเป็น TrueCrypt_Setup_7.1a.exe พร้อมด้วย SHA256 e95eca399dfe95500c4de569efc4cc77b75e2b66a864d467df37733ec06a0ff2)
[{"op":"To Hex","args":["None"]},{"op":"Regular expression","args":["User defined","(?<=0D0A0D0A).*$",true,false,false,false,false,false,"List matches"]},{"op":"From Hex","args":["Auto"]},{"op":"Gunzip","args":[]}]
หากคุณต้องการคัดแยกสถานที่ถ่ายภาพอย่างรวดเร็ว และคุณโชคดีพอที่จะฝัง GPS ละติจูดและลองจิจูดไว้ ให้ใช้สูตรนี้เพื่อสร้าง URL ของ Google Maps ที่ใช้งานได้อย่างรวดเร็วเพื่อระบุตำแหน่ง
[{"op":"Extract EXIF","args":[]},{"op":"Regular expression","args":["User defined","((?<=GPSLatitude:).*$)|((?<=GPSLongitude: ).*$)",true,true,false,false,false,false,"List matches"]},{"op":"Find / Replace","args":[{"option":"Extended (\n, \t, \x...)","string":"\n"},",",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":" "},"https://maps.google.com/?q=",true,false,true,false]}]
CyberChef สามารถรองรับคนจำนวนมากได้ ที่นี่เราสามารถใช้สูตรง่ายๆ ในการเปลี่ยน X509SerialNumber 38 หลักเป็นหมายเลขซีเรียลใบรับรอง X.509 ที่เป็นเลขฐานสิบหก จากนั้นเราสามารถ regex เลขฐานสิบหกและแทรกโคลอนเพื่อแปลงเป็นรูปแบบที่ถูกต้อง
เครดิต: @QW5kcmV3
ที่มา: https://twitter.com/QW5kcmV3/status/949437437473968128
[{"op":"To Base","args":[16]},{"op":"Regular expression","args":["User defined","[a-f0-9]{2,2}",true,true,false,false,false,false,"List matches"]},{"op":"Find / Replace","args":[{"option":"Extended (\n, \t, \x...)","string":"\n"},":",true,false,true,false]}]
ที่อยู่ IP ในบันทึก DNS PTR จะถูกจัดเก็บเป็นออคเต็ตที่มีนัยสำคัญน้อยที่สุดก่อน ตัวอย่างเช่น: 167.139.44.10.in-addr.arpa จะเกี่ยวข้องกับที่อยู่ IP 10.44.139.167 การใช้รีจิสเตอร์ของ CyberChef ทำให้เราสามารถจัดสรรออคเต็ตแต่ละตัวให้กับรีจิสเตอร์หน่วยความจำได้ (หรือตัวแปรถ้าคิดแบบนั้นง่ายกว่า) จากนั้นสามารถย้อนกลับเพื่อเรียงลำดับที่อยู่ IP ใหม่ได้ การค้นหา/แทนที่จะช่วยจัดระเบียบส่วนที่เหลือของบันทึก สิ่งนี้สามารถย้อนกลับได้หากคุณต้องการแปลที่อยู่ IP 'ปกติ' เพื่อค้นหาในบันทึก DNS PTR
[{"op":"Fork","args":["\n","\n",false]},{"op":"Register","args":["(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})",true,false,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R0.$R1.$R2.$R3"},"$R3.$R2.$R1.$R0",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":".in-addr.arpa"},"",true,false,true,false]}]
PoshC2 เป็นเฟรมเวิร์ก C2 ที่รับรู้พร็อกซีซึ่งใช้ Powershell เพื่อช่วยเหลือผู้ทดสอบการเจาะด้วยทีมสีแดง หลังการแสวงหาผลประโยชน์ และการเคลื่อนไหวด้านข้าง หยดจะขึ้นอยู่กับ PowerShell และประกอบด้วยสคริปต์ PowerShell ซึ่งมีการเข้ารหัสและบีบอัด Base64 สองเท่า การแยกสตริงสามารถทำได้ด้วย CyberChef ตามรายละเอียดด้านล่าง ขึ้นอยู่กับการตั้งค่าและการปรับแต่งโปรแกรมปฏิบัติการ คุณอาจต้องปรับสูตรของคุณ
เครดิต: @a_twitterer_user
ที่มา: https://twitter.com/a_twitterer_user/status/1100751236687642624
ที่มา: posh.zip
[{"op":"Strings","args":["All",4,"Alphanumeric + punctuation (A)",false]},{"op":"Remove null bytes","args":[]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+=]{200,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Remove null bytes","args":[]},{"op":"Regular expression","args":["User defined","[a-z0-9/\\+=]{100,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]}]
CyberChef สามารถทำทุกอย่างด้วยข้อมูล นี่คือไบต์ฐานสิบหกดิบจากรายการ $MFT ด้วยการเลือกไบต์ที่แน่นอน และใช้ฟังก์ชันต่างๆ ของ CyberChef ฉันสามารถแยกวิเคราะห์ส่วนใดส่วนหนึ่งของข้อมูลได้ตามต้องการ สูตรนี้จะแยกและแยกวิเคราะห์การประทับเวลา $SI ไม่ต้องห่อหุ้มอีกต่อไป!
[{"op":"Take bytes","args":[160,64,false]},{"op":"Regular expression","args":["User defined",".{16}",true,true,true,false,false,false,"List matches with capture groups"]},{"op":"Fork","args":["\n","\n",false]},{"op":"Swap endianness","args":["Hex",10,true]},{"op":"Remove whitespace","args":[true,true,true,true,true,false]},{"op":"Windows Filetime to UNIX Timestamp","args":["Nanoseconds (ns)","Hex"]},{"op":"From UNIX Timestamp","args":["Nanoseconds (ns)"]},{"op":"Merge","args":[]},{"op":"Register","args":["(.*)\n(.*)\n(.*)\n(.*)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R0"},"$SI Creation Time: $R0",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R1"},"$SI Modified Time: $R1",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R2"},"$SI MFT Change Time: $R2",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R3"},"$SI Access Time: $R3",false,false,true,false]}]
Webshells มีทุกรูปทรงและขนาด สำหรับ PHP webshells สามารถใช้ gzinflate และ base64 ร่วมกันเพื่อทำให้ข้อมูล eval สับสนได้ ในตัวอย่างนี้ มีการบีบอัด 21 รอบและ base64 ที่เราสามารถแยกวิเคราะห์ได้อย่างรวดเร็วโดยใช้ป้ายกำกับและลูป
ที่มา: https://github.com/LordWolfer/webshells/blob/b7eefaff64049e3ff61e90c850686135c0ba74c4/from_the_wild1.php
[{"op":"Label","args":["start"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9=/+]{10,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Block",false,false]},{"op":"Jump","args":["start",21]}]
มักพบเห็นใน Pastbin bot @scumbots ของ @pmelson ซึ่งจะลอกสคริปต์ Powershell ที่เข้ารหัสหลายชั้นออกไปเพื่อแสดงเชลล์โค้ด จากที่นี่คุณ สามารถ แยกคำสั่ง PUSH เพื่อลองระบุที่อยู่ IP และพอร์ตได้ แต่คุณจะได้รับผลบวกลวงมากเกินไป ดังนั้นคุณควรใช้เครื่องมือเช่น scdbg ดีกว่า (ดู: http://sandsprite.com/blogs/index.php?uid=7&pid=152)
ที่มา: https://twitter.com/ScumBots/status/1121854255898472453
ที่มา: https://pastebin.com/9DnD6t6W / 9DnD6t6W.txt
[{"op":"Regular expression","args":["User defined","[a-zA-Z0-9=/+]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Remove null bytes","args":[]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9=/+]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Gunzip","args":[]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9=/+]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hex","args":["None"]},{"op":"Disassemble x86","args":["32","Full x86 architecture",16,0,true,true]}]
ส่วนย่อยและการผสานเป็นเครื่องมือที่มีประสิทธิภาพใน CyberChef ซึ่งช่วยให้สามารถนำส่วนผสมไปใช้กับข้อมูลที่เลือกได้ แทนที่จะเป็นไฟล์อินพุตทั้งหมด จากนั้นสามารถรวมส่วนนี้เข้าด้วยกันเพื่อดำเนินการต่อในอินพุตทั้งหมดได้ ในการทำงานที่ยอดเยี่ยม @GlassSec ได้สร้าง Windows Recycle Bin parser โดยใช้ CyberChef เพื่อบ่งชี้ความเป็นไปได้ของฟังก์ชันเหล่านี้อย่างไม่มีที่สิ้นสุด
ที่มา: https://gist.github.com/glassdfir/f30957b314ec39a8aa319420a29ffc76
เครดิต: https://twitter.com/GlassSec
[{"op":"Conditional Jump","args":["^(\x01|\x02)",true,"Error",10]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^(\x02.{23})(....)"},"$1",false,false,false,false]},{"op":"Subsection","args":["^.{24}(.*)",true,true,false]},{"op":"Decode text","args":["UTF16LE (1200)"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^(.*)."},"\nDeleted File Path: $1",false,false,false,false]},{"op":"Merge","args":[]},{"op":"Subsection","args":["^.{16}(.{8})",false,true,false]},{"op":"Swap endianness","args":["Raw",8,true]},{"op":"To Hex","args":["None"]},{"op":"Windows Filetime to UNIX Timestamp","args":["Seconds (s)","Hex"]},{"op":"From UNIX Timestamp","args":["Seconds (s)"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^(.* UTC)"},"\nFile Deletion Time: $1",true,false,true,false]},{"op":"Merge","args":[]},{"op":"Subsection","args":["^.{8}(.{8})",true,true,false]},{"op":"To Hex","args":["None"]},{"op":"Swap endianness","args":["Hex",8,true]},{"op":"From Base","args":[16]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^(.*)"},"\nDeleted File Size: $1 bytes",true,false,true,true]},{"op":"Merge","args":[]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^.{8}"},"******** WINDOWS RECYCLE BIN METADATA ********",true,false,false,false]},{"op":"Jump","args":["Do Nothing",10]},{"op":"Label","args":["Error"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^.*$"},"This doesn't look like a Recycle Bin file to me ",true,false,true,false]},{"op":"Label","args":["Do Nothing"]}]
สูตรน้อยลงแต่มีเทคนิคมากขึ้น การใช้ฟังก์ชัน 'ไฮไลต์' ของส่วนผสมนิพจน์ทั่วไปสามารถแสดงให้เห็นอย่างชัดเจนว่าข้อมูล base64 แตกตรงไหนด้วยชุดอักขระ base64 ที่ไม่ใช่แบบดั้งเดิม นี่คือลำดับ '@<!' ใช้เพื่อทำให้สับสนและขัดขวางการแปลงการเข้ารหัสอัตโนมัติ เมื่อดูสคริปต์เพิ่มเติม ลำดับจะถูกแทนที่ด้วย 'A' ซึ่งสามารถแทรกด้วยการค้นหา/แทนที่ก่อนการแยกข้อมูลได้ สิ่งนี้จะดำเนินต่อไปหลายรอบจนกว่าจะมีการเปิดเผยโดเมนที่สนใจ (พร้อมกับไฟล์ปฏิบัติการก่อนหน้า)
ที่มา: https://pastebin.com/TmJsB0Nv & https://twitter.com/pmelson/status/1167065236907659264
[{"op":"Find / Replace","args":[{"option":"Simple string","string":"@<!"},"A",true,false,true,false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{20,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{50,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"@<!"},"A",true,false,true,false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{50,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]}]
แม้ว่าจะไม่ใช่วิธีที่สะดวกที่สุด แต่ CyberChef ก็มีความสามารถในการรันกฎ yara เหนือผลลัพธ์ของสูตรอาหาร คุณสามารถรวมสิ่งนี้เข้าด้วยกันได้โดยใช้ฟังก์ชันอินพุตหลายรายการเพื่อสแกนไฟล์จำนวนมากขึ้น
ที่มา: https://twitter.com/ScumBots/status/1168528510681538560 & https://pastebin.com/r40SXe7V
[{"op":"Regular expression","args":["User defined","\(.*\);",true,false,false,false,false,false,"List matches"]},{"op":"Find / Replace","args":[{"option":"Regex","string":",|\(|\);"}," ",true,false,true,false]},{"op":"From Charcode","args":["Space",10]},{"op":"YARA Rules","args":["rule SuspiciousPowerShell {n meta:n description = "Testing Yara on Cyberchef for Powershell"n strings:n $a1 = "[System.Reflection.Assembly]" asciin $a2 = "IEX" ascii nocasen $a3 = "powershell.exe -w hidden -ep bypass -enc" asciin condition:n 2 of themn}",true,true,true,true]}]
สูตรนี้จะแยกเพย์โหลด VBE ออกจากไฟล์ทางลัดของ Microsoft (LNK) จากนั้นถอดรหัสสตริงฐานสิบหกในบรรทัดโดยใช้ส่วนย่อย
ที่มา: Malware.lnk.bin
[{"op":"Microsoft Script Decoder","args":[]},{"op":"Subsection","args":["(?<=\(\")(.*?)(?=\"\))",true,true,false]},{"op":"Fork","args":["\n","\n",false]},{"op":"From Hex","args":["Auto"]}]
การใช้ฟังก์ชันคำขอ HTTP และการลงทะเบียนทำให้เราสามารถเพิ่มประสิทธิภาพข้อมูลจาก API หรือทรัพยากรภายนอกได้ ที่นี่เรากำลังค้นหาแฮช JA3 สามรายการเพื่อหาสิ่งที่ไม่ดีที่ทราบ
ที่มา: แฮชอินพุต: 1aa7bf8b97e540ca5edd75f7b8384bfa, 1be3ecebe5aa9d3654e6e703d81f6928 และ b386946a5a44d1ddcc843bc75336dfce
[{"op":"Comment","args":["https://ja3er.com/search/hash"]},{"op":"Fork","args":["\n","\n",false]},{"op":"Register","args":["(.*)",true,false,false]},{"op":"HTTP request","args":["GET","https://ja3er.com/search/$R0","","Cross-Origin Resource Sharing",false]},{"op":"JSON Beautify","args":[" ",false]}]
ไฟล์ DOC ที่เป็นอันตรายนี้ถูกดาวน์โหลดโดยตรงจาก Hybrid-Analysis เราแยกไฟล์ออก เลือก dosfuscation ด้วยนิพจน์ทั่วไป จากนั้นเลือกส่วนสำคัญที่ใช้กับฟังก์ชัน 'set' ส่วนนี้ลดความยุ่งเหยิงด้วยการวนซ้ำแบบย้อนกลับด้วยขั้นตอนที่ 3 ดังนั้นเมื่อเลือกแล้ว เราจะย้อนกลับสตริงและใช้กลุ่มการจับนิพจน์ทั่วไปเพื่อเลือกอักขระทุกตัวที่สาม นี่เป็นผลงานที่ยอดเยี่ยมจาก Hack eXPlorer บน YouTube ไปที่นั่นและดู!
ที่มา: Untitled-11232018-659370.doc.bin.gz
เครดิต: ดัดแปลงมาจากวิดีโอของ Hack eXPlorer การซ่อนโค้ดที่เป็นอันตรายโดยใช้ windows CMD - Dosfuscation
[{"op":"Gunzip","args":[]},{"op":"Regular expression","args":["User defined","c:\\.*"",true,true,false,false,false,false,"List matches"]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"^"},"",true,false,true,false]},{"op":"Regular expression","args":["User defined","(?<=9ojB\=)(.*?)(?=\) )",true,true,false,false,false,false,"List matches"]},{"op":"Reverse","args":["Character"]},{"op":"Regular expression","args":["User defined","(.)..",true,true,false,false,false,false,"List capture groups"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\n"},"",true,false,true,false]},{"op":"Extract URLs","args":[false]},{"op":"Extract domains","args":[true]}]
คำขอความช่วยเหลือนำไปสู่สูตรนี้ซึ่งใช้ Registers, คำขอ HTTP และ Regex บางตัวเพื่อเลือกอักขระสุ่มจากสตริงหกไบต์
เครดิต: ดัดแปลงมาจาก Steve Thompson
[{"op":"Register","args":["(.*)",true,false,false]},{"op":"HTTP request","args":["GET","https://www.random.org/integers/?num=1&min=1&max=6&col=1&base=10&format=plain&rnd=new","","Cross-Origin Resource Sharing",false]},{"op":"Register","args":["(.)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"(.)"},"$R0",true,false,true,false]},{"op":"Regular expression","args":["User defined","(.){$R1}",true,true,false,false,false,false,"List capture groups"]},{"op":"Head","args":["Line feed",1]}]
เพื่อความสะดวกในการให้เพื่อนของคุณเข้าถึง wifi ของแขกของคุณ หรือสำหรับ Red Team ที่ต้องการเพิ่มความสะดวกสบายที่น่าดึงดูดให้กับจุดเชื่อมต่ออันธพาล! การใช้ฟังก์ชันสร้างรหัส QR เพื่อให้อุปกรณ์ Android หรือ iOS เข้าสู่ระบบ Wifi ของคุณได้
เครดิต: https://twitter.com/mattnotmax/status/1242031548884369408
ความเป็นมา: https://github.com/zxing/zxing/wiki/Barcode-Contents#wi-fi-network-config-android-ios-11
Generate_QR_Code('PNG',5,2,'Medium')
ถอดรหัส Webshell ที่บันทึกโดย SANS ทั้งหมดภายใน Cyberchef โดยใช้ regex, ROT13, คำขอ HTTP, Registers และอีกมากมาย!
เครดิต: https://twitter.com/thebluetoob
[{"op":"Regular expression","args":["User defined","(?<=')(.*?)(?=')",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"ROT13","args":[true,true,13]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"ROT13","args":[true,true,13]},{"op":"Extract URLs","args":[false]},{"op":"Register","args":["(.*)",true,false,false]},{"op":"HTTP request","args":["GET","$R0","","Cross-Origin Resource Sharing",false]},{"op":"Strings","args":["Single byte",4,"Alphanumeric + punctuation (A)",false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+=/]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Regular expression","args":["User defined","(?<=')(.*?)(?=')",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"ROT13","args":[true,true,13]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+=/]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]}]
การถอดรหัสสคริปต์ผู้เยี่ยมชมอัตโนมัติที่เขียนด้วย PHP ภายใน Cyberchef โดยใช้ regex, ROT13, อัลกอริธึมการบีบอัดข้อมูลหลายรายการ และ ส่วนย่อย ! ประเด็นสำคัญที่ต้องพิจารณาคือ มีตัวแปรสองตัวที่ใช้การสร้างความสับสนที่แตกต่างกัน คุณมีทางเลือก 2-3 ทาง: ทำงานในหน้าต่าง CyberChef หลายหน้าต่างเพื่อให้ได้ผลลัพธ์สุดท้าย หรือใช้ส่วนย่อยและ greg สำหรับแต่ละตัวแปรตามด้านล่างนี้เพื่อจัดการแต่ละหน้าต่างแยกจากกัน และรับเอาต์พุตที่ถอดรหัสความสับสนแล้วทั้งคู่ในสคริปต์เดียว คุณสามารถย่อสูตรให้สั้นลงได้อีกโดยใช้ลูปเพื่อข้าม Raw Inflate หลายรอบ
เครดิต: สคริปต์ต้นฉบับจัดทำโดย @NtSetDefault สูตรอาหาร Cyberchef ดั้งเดิมที่สร้างโดย @thebluetoob และปรับปรุงโดย @mattnotmax ในสูตรเดียว
[{"op":"Regular expression","args":["User defined","(?<=')(.*?)(?=')",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"ROT13","args":[true,true,13]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"ROT13","args":[true,true,13]},{"op":"Subsection","args":["(?<=\$Fadly.*?")(.*?)(?=\")",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"URL Decode","args":[]},{"op":"From HTML Entity","args":[]},{"op":"Merge","args":[]},{"op":"Subsection","args":["(?<=\$Gans.*?")(.*?)(?=\")",true,true,false]},{"op":"Reverse","args":["Character"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Label","args":["jump"]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"Jump","args":["jump",2]},{"op":"Zlib Inflate","args":[0,0,"Adaptive",false,false]},{"op":"Zlib Inflate","args":[0,0,"Adaptive",false,false]}]
เลือกพิษของคุณด้วยสคริปต์อันชาญฉลาดจาก @0xtornado ซึ่งจะกำหนดประเภทของสคริปต์บีคอนที่ทำให้งงงวยของคุณผ่านการข้ามแบบมีเงื่อนไขของ CyberChef เพื่อแยกวิเคราะห์เชลล์โค้ด ขั้นแรกโค้ดจะค้นหา regex 'bxor' แบบง่าย ๆ จากนั้นข้ามไปยังส่วนที่เหมาะสมของสูตร มิฉะนั้นจะแยกวิเคราะห์ประเภทที่สอง การใช้ 'แท็บ' ของ CyberChef ทำให้คุณสามารถโหลดสคริปต์ที่แตกต่างกันสองสคริปต์และนำข้อมูลของคุณออกมาได้ สร้างความประทับใจให้เพื่อนร่วมงานและทีมสีแดงที่เป็นมิตรหรือทีมงาน APT ในพื้นที่ของคุณ!
เครดิต: https://twitter.com/0xtornado/status/1255866333545316352
[{"op":"Conditional Jump","args":["bxor",false,"Decode_Shellcode",10]},{"op":"Label","args":["Decode_beacon"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Gunzip","args":[]},{"op":"Label","args":["Decode_Shellcode"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"XOR","args":[{"option":"Decimal","string":"35"},"Standard",false]}]
ไม่ใช่ทุกคนที่คิดว่า CyberChef เป็นเครื่องมือในการวิเคราะห์ไฟล์บันทึก แต่จะมีประโยชน์หากคุณต้องย้าย ฟอร์แมตใหม่ หรือแก้ไขไฟล์บันทึกเพื่อให้เหมาะกับวัตถุประสงค์ของคุณ ที่นี่ เรามีไฟล์บันทึก Apache ที่มีการประทับเวลาที่ไม่นำไปสู่การวิเคราะห์ชั่วคราวที่เป็นประโยชน์กับไฟล์บันทึกอื่นๆ: รูปแบบวันที่ไม่สามารถจัดเรียงได้ โดยอยู่ในวงเล็บเหลี่ยม และอยู่ใน UTC +1 ไม่ใช่ UTC มาตรฐาน การใช้ส่วนย่อย การลงทะเบียน และการย้ายวันที่และเวลา เราสามารถเปลี่ยนรูปแบบของการประทับเวลาและย้ายคอลัมน์ไปรอบๆ เพื่อให้สามารถรวมเข้ากับข้อมูลอื่นได้ สุดยอด!
เครดิต: @gazambelli และ @mattnotmax
[{"op":"Fork","args":["\n","\n",false]},{"op":"Subsection","args":["\[.*\+0100\]",true,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\[|\]"},"",true,false,true,false]},{"op":"Translate DateTime Format","args":["Standard date and time","DD/MMM/YYYY:HH:mm:ss ZZ","Etc/GMT-1","YYYY-MM-DDTHH:mm:ss ZZ","UTC"]},{"op":"Merge","args":[]},{"op":"Fork","args":["\n","\n",false]},{"op":"Register","args":["(.*)(\d{4}-.*\+0000)(.*)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"$R0$R1$R2"},"$R1 $R0 $R2",true,false,true,false]}]
รูปแบบที่แตกต่างกันของตัวโหลด PowerShell มาตรฐานสำหรับ Cobalt Strike ที่นี่เลเยอร์แรกของการทำให้งงงวยคือ GZipped blob ที่แบ่งออกเป็นอาร์เรย์ CharCode สองชุด ผลลัพธ์ที่ได้ขึ้นอยู่กับคุณ: การแยกชิ้นส่วน สตริง แยก IP หรือแยกวิเคราะห์ UserAgent เลือกการผจญภัยของคุณเอง
ที่มา: @scumbots & https://pastebin.com/raw/mUFM4fcQ
[{"op":"Regular expression","args":["User defined","\d{1,3}",true,true,false,false,false,false,"List matches"]},{"op":"From Charcode","args":["Line feed",10]},{"op":"Gunzip","args":[]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"XOR","args":[{"option":"Decimal","string":"35"},"Standard",false]},{"op":"Strings","args":["Single byte",5,"All printable chars (A)",false]}]
.dll ที่เป็นอันตรายของ SolarWinds มีสตริงที่สับสนโดยใช้การบีบอัดและ base64 แทนที่จะสูญเสียบริบทในการวิเคราะห์ของคุณ เราสามารถลดความสับสนในบรรทัดได้อย่างรวดเร็วโดยเลือกสตริงที่มีส่วนย่อยแล้วแปลง ผลลัพธ์ที่ได้คือฟังก์ชันที่สามารถอ่านได้ตามบริบท และหลีกเลี่ยงการตัดและวางที่อาจเกิดข้อผิดพลาดได้ง่าย
เครดิต: @cybercdh & @ Shadow0pz
ที่มา: https://twitter.com/cybercdh/status/1338885244246765569 & https://twitter.com/Shadow0pz/status/1338911469480661000
[{"op":"Subsection","args":["(?<=\(\")(.*)(?=\"\))",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]}]
Gootkit เก็บ DLL ไว้ในรีจิสทรีเป็น PowerShell ที่เข้ารหัส CyberChef สร้างเนื้อสับจากมัลแวร์ที่เรียกว่า 'ไร้ไฟล์' สูตรอาหารที่มีประโยชน์จาก @StefanKelm ทำให้ 'file' กลับเป็น 'fileless' (ใช่ ฉันคิดแบบนั้นเอง เราทำได้ถึงสูตร 32 แล้วเพื่อนของฉัน...)
ที่มา: https://github.com/StefanKelm/cyberchef-recipes
[{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]}]
ด้วยการใช้การดำเนินการอันทรงพลังของ Registers สูตรที่มีประโยชน์จาก @Cryptolaemus1 จะแยก URL ที่สับสนจาก PowerShell จากเอกสารที่เป็นอันตราย Emotet กลุ่มการจับที่นี่ใช้เพื่อดึงสตริงค้นหา/แทนที่ซึ่งจะช่วยลดความสับสนของ URL สิ่งที่ยอดเยี่ยม
เครดิต: @Cryptolaemus และ @NtRaiseException()
ที่มา: https://twitter.com/Cryptolaemus1/status/1319357369902649344
[{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"'\)?\+\(?'"},"",true,false,true,false]},{"op":"Register","args":["\(+'(=[\w\d]*)'\)+,'/'\)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"$R0"},"/",true,false,true,false]},{"op":"Register","args":["\/(.)http",true,false,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"$R1"},"\n",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"'"},"\n",true,false,true,false]},{"op":"Extract URLs","args":[false]}]
Didier Stevens แสดงให้เห็นถึงความเรียบง่ายและประโยชน์อันน่าทึ่งของ CyberChef โดยการแยก URL ออกจากเอกสาร OOXML (เช่น ไฟล์ .docx) ด้วยการคลายซิปไฟล์และกรอง 'สินค้าที่ทราบ' ออก ทำให้สามารถตรวจสอบ URL ที่เหลือได้ อย่าลืม defang เพื่อหลีกเลี่ยงการคลิกที่ไม่จำเป็นหรือข้อผิดพลาดด้านความปลอดภัยในการปฏิบัติงาน เมื่อรวมกับฟังก์ชัน 'แท็บ' ของ CyberChef แล้วคุณจะสามารถวิเคราะห์ไฟล์เป็นชุดได้
เครดิต: @DidierStevens
ที่มา: https://isc.sans.edu/diary/27020
[{"op":"Unzip","args":["",false]},{"op":"Extract URLs","args":[false]},{"op":"Filter","args":["Line feed","http://schemas\.openxmlformats\.org/",true]},{"op":"Filter","args":["Line feed","http://schemas\.microsoft\.com/",true]},{"op":"Filter","args":["Line feed","http://purl\.org/",true]},{"op":"Filter","args":["Line feed","http://www\.w3\.org/",true]},{"op":"Defang URL","args":[true,true,true,"Valid domains and full URLs"]}]
สคริปต์แรนซัมแวร์ PowerShell ที่เข้ารหัส AES ไม่ตรงกับ CyberChef ที่นี่สามารถแปลง Base64 เป็น hex แยก IV และ Key ลงในรีจิสเตอร์และใช้เพื่อถอดรหัสหยด เมื่อถอดรหัสแล้ว เราจะตรวจสอบข้อมูลและระบุไฟล์ PE ขนาด 1925 ไบต์ลงในหยดที่ถอดรหัสได้ เมื่อแยกสิ่งนี้ออกมาแล้ว เราก็สามารถใช้เครื่องมืออื่นๆ เพื่อระบุพฤติกรรมของมัน รวมถึงการระเบิดหรือการวิเคราะห์ทางสถิต
ที่มา: @mattnotmax
ข้อมูลเพิ่มเติม: Powershell ปล่อย REvil Ransomware
[{"op":"Subsection","args":["(?<=\")([a-zA-Z0-9+/=]{20,})(?=\")",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hex","args":["None",0]},{"op":"Merge","args":[]},{"op":"Register","args":["(?<=\")([a-fA-F0-9]{32})(?=\")",true,false,false]},{"op":"Register","args":["(?<=\")([a-fA-F0-9]{64})(?=\")",true,false,false]},{"op":"Regular expression","args":["User defined","[a-f0-9]{100,}",true,true,false,false,false,false,"List matches"]},{"op":"AES Decrypt","args":[{"option":"Hex","string":"$R1"},{"option":"Hex","string":"$R0"},"CBC","Hex","Raw",{"option":"Hex","string":""},""]},{"op":"Regular expression","args":["User defined","[a-f0-9]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Hex","args":["Auto"]},{"op":"Drop bytes","args":[0,1925,false]},{"op":"SHA2","args":["256",64,160]}]
โอเค ฉันค่อนข้างจะโกงที่นี่ เนื่องจากงานส่วนใหญ่กำลังดำเนินการโดย API แต่เป็นตัวอย่างที่ดีที่จะเตือนคุณว่าการดำเนินการคำขอ HTTP อาจเป็นวิธีที่มีประสิทธิภาพอย่างยิ่งในการเพิ่มประสิทธิภาพของ CyberChef ที่นี่ฉันสร้าง 'แบบฟอร์มอินพุต' เล็กน้อยในบานหน้าต่างอินพุต CyberChef และใช้นิพจน์ทั่วไปเพื่อจับพารามิเตอร์หลักสำหรับการเรียก API ไปยังรีจิสเตอร์ นวดข้อความเพียงเล็กน้อยและคุณสามารถมีเครื่องกำเนิดไฟฟ้าที่ง่ายและรวดเร็วตามที่คุณต้องการ บันทึกเป็นสูตรเมื่อคุณต้องการส่งรหัสผ่านใหม่อย่างรวดเร็วให้กับผู้ใช้ใหม่
ที่มา: @mattnotmax
[{"op":"Register","args":["(?<=number:\s)(.*)",true,false,false]},{"op":"Register","args":["(?<=words:\s)(.*)",true,false,false]},{"op":"Register","args":["(?<=length:\s)(.*)",true,false,false]},{"op":"HTTP request","args":["GET","https://makemeapassword.ligos.net/api/v1/passphrase/plain?pc=$R0&wc=$R1&sp=y&maxCh=$R2","","Cross-Origin Resource Sharing",false]},{"op":"Find / Replace","args":[{"option":"Regex","string":" "},"-",true,false,true,false]}]
แซนด์บ็อกซ์ส่วนใหญ่ส่งไฟล์ซิปพร้อมรหัสผ่านทั่วไปว่า 'ติดไวรัส' เหตุใดจึงเสี่ยงที่จะแตกไฟล์ออกมาบนเดสก์ท็อปของคุณในเมื่อคุณสามารถแตกเนื้อหาใน CyberChef ได้? ที่นี่เรามีไฟล์อีเมล .eml
ซึ่งรวมถึงไฟล์แนบ OLE2 Strings
ระบุ Base64 ซึ่งจากนั้นจะถูกแยกและถอดรหัสเพื่อดึงสเตจที่สองออกมา
ที่มา: Any.run
[{"op":"Unzip","args":["infected",false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\n"},"",true,false,true,false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{400,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Strings","args":["16-bit littleendian",400,"Null-terminated strings (U)",false]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{2000,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Extract URLs","args":[false]},{"op":"Defang URL","args":[true,true,true,"Valid domains and full URLs"]}]
การทดแทนคือการทดแทน อาจเป็นตัวอักษรต่อตัวอักษร ตัวอักษรต่อตัวเลข หรือตัวอักษรสำหรับ...กะโหลก? ในส่วนนี้ การสร้างความสับสนในตอนแรกอาจดูน่าสับสนมากขึ้น แต่จริงๆ แล้วไม่แตกต่างจากประเภทอื่นๆ ค้นหา/แทนที่ ส่วนย่อย จาก Base64...ทุกวันมาตรฐานสำหรับ CyberChef ฉันได้ย้อนกลับส่วนแรกเพื่อเปิดใช้การแยก URL แล้วดำเนินการต่อด้วยการถอดรหัสที่สร้างความสับสน
ที่มา: any.run
เครดิต: https://twitter.com/neonprimetime/status/1365351048525791232
[{"op":"Find / Replace","args":[{"option":"Regex","string":"☠"},"B",true,false,true,false]},{"op":"Subsection","args":["[a-zA-Z0-9+/=]{300,}",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Reverse","args":["Character"]},{"op":"Merge","args":[]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"_✉✈_"},"A",true,false,true,false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{300,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]}]
GoldMax หรือที่รู้จักกันในชื่อ Sunshuttle จะปล่อยไฟล์การกำหนดค่าที่เข้ารหัสเมื่อดำเนินการ ในการวิเคราะห์ RE โดย Microsoft และ Fireeye มีการระบุและเผยแพร่อัลกอริทึมและคีย์ ทำให้การถอดรหัสด้วย CyberChef เป็นเรื่องง่าย
ที่มา 1: https://www.microsoft.com/security/blog/2021/03/04/goldmax-goldfinder-sibot-analyzing-nobelium-malware/
ที่มา 2: https://www.fireeye.com/blog/threat-research/2021/03/sunshuttle-second-stage-backdoor-targeting-us-based-entity.html
[{"op":"From Base64","args":["A-Za-z0-9-_",true]},{"op":"AES Decrypt","args":[{"option":"UTF8","string":"hz8l2fnpvp71ujfy8rht6b0smouvp9k8"},{"option":"Hex","string":"00000000000000000000000000000000"},"CFB","Raw","Raw",{"option":"Hex","string":""}]},{"op":"Subsection","args":["[a-zA-Z0-9+/=]{50,}",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Merge","args":[]},{"op":"Drop bytes","args":[0,16,false]},{"op":"Take bytes","args":[0,120,false]},{"op":"Register","args":["(^.*?)\|(.*?)\|(.*?)\|(.*)\|(.*)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":".*"},"MD5 of Execution Time:\t\t\t$R0\nLower/Upper Limit for Sleep Time:\t$R1\nUtilize “blend-in” traffic requests:\t$R2\nEnd execution timestamp:\t\t$R2\nUser-agent for HTTPS requests:\t\t$R4",false,false,false,false]}]
ใช่ มีการทำงานของรหัสมอร์สใน CyberChef ใช่ สักวันหนึ่งคุณอาจต้องใช้มัน น่าเสียดายที่นี่ไม่ใช่มัลแวร์ แต่ CyberChef ยังคงทำงานได้ ขอขอบคุณ @pmelson และ @cyber__sloth สำหรับรายการนี้
ที่มา: https://pastebin.com/raw/PvLuparz
สูตรอาหาร: https://twitter.com/cyber__sloth/status/1367904890157211654
[{"op":"From Binary","args":["Space",8]},{"op":"From Morse Code","args":["Space","Forward slash"]},{"op":"Reverse","args":["Character"]},{"op":"ROT13","args":[true,true,false,13]}]
เราต้องการอะไร? การเข้ารหัสแบบผสมทั้งเลขฐานสิบหกและฐานแปดในชุดเดียว! เราต้องการมันเมื่อไหร่? ตอนนี้!
ที่มา: https://twitter.com/JCyberSec_/status/1368963598475739137
[{"op":"Fork","args":["\n","\n",false]},{"op":"Subsection","args":["\\x[a-fA-F0-9]{2}",true,true,false]},{"op":"From Hex","args":["\x"]},{"op":"Merge","args":[]},{"op":"Subsection","args":["\\\d{3}",true,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\\"},"",true,false,true,false]},{"op":"From Octal","args":["Space"]}]
เปลือกหุ้มหลายชั้นนี้เป็นกรณีที่ดีสำหรับส่วนย่อยและการกระโดด คุณสามารถแบ่งเป็นส่วนๆ หรือทำให้เสร็จก็ได้ (ตามด้านล่าง) ในสูตร CyberChef สูตรเดียว
ที่มา: https://twitter.com/mattnotmax/status/1377829935780274176
[{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Subsection","args":["(?<=\\x)([a-fA-F0-9]{2})",true,true,false]},{"op":"From Hex","args":["\x"]},{"op":"Merge","args":[]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\\x"},"",true,false,true,false]},{"op":"Subsection","args":["[a-zA-Z0-9+/=]{30,}=",true,true,false]},{"op":"From