
🦆 Malduck هو رفيقك البطّي في رحلات تحليل البرمجيات الخبيثة
مالداك هو رفيقك البط في رحلات تحليل البرامج الضارة. يعتمد بشكل أساسي على مشروع Roach، الذي يستمد العديد من المفاهيم من مكتبة mlib التي أنشأها Maciej Kotowicz. كان الغرض من التفرع هو جعل Roach مستقلاً عن مشروع Cuckoo Sandbox، مع الاستمرار في دعم تنسيقه الداخلي procmem.
يوفر مالداك العديد من التحسينات الناتجة عن قاعدة بيانات CERT.pl، مما يجعل النصوص المكتوبة لأغراض تحليل البرامج الضارة أقصر وأقوى بكثير.
from malduck import aes
key = b'A'*16
iv = b'B'*16
plaintext = b'data'*16
ciphertext = aes.cbc.encrypt(key, iv, plaintext)
from malduck import serpent
key = b'a'*16
iv = b'b'*16
plaintext = b'data'*16
ciphertext = serpent.cbc.encrypt(key, plaintext, iv)
from malduck import aplib
# Headerless compressed buffer
aplib(b'T\x00he quick\xecb\x0erown\xcef\xaex\x80jumps\xed\xe4veur`t?lazy\xead\xfeg\xc0\x00')
from malduck import DWORD
def sdbm_hash(name: bytes) -> int:
hh = 0
for c in name:
# operations on the DWORD type produce a dword, so a result
# is also a DWORD.
hh = DWORD(c) + (hh << 6) + (hh << 16) - hh
return int(hh)
from malduck import Extractor
class Citadel(Extractor):
family = "citadel"
yara_rules = ("citadel",)
overrides = ("zeus",)
@Extractor.string("briankerbs")
def citadel_found(self, p, addr, match):
log.info('[+] `Coded by Brian Krebs` str @ %X' % addr)
return True
@Extractor.string
def cit_login(self, p, addr, match):
log.info('[+] Found login_key xor @ %X' % addr)
hit = p.uint32v(addr + 4)
print(hex(hit))
if p.is_addr(hit):
return {'login_key': p.asciiz(hit)}
hit = p.uint32v(addr + 5)
print(hex(hit))
if p.is_addr(hit):
return {'login_key': p.asciiz(hit)}
from malduck import procmempe
with procmempe.from_file("notepad.exe", image=True) as p:
resource_data = p.pe.resource("NPENCODINGDIALOG")
قم بتثبيته عن طريق تشغيل
pip install malduck
يمكن العثور على المزيد من الوثائق على readthedocs.
