8.8 KiB
Kriptografski/Kompresioni Algoritmi
Kriptografski/Kompresioni Algoritmi
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu u HackTricks-u ili preuzmete HackTricks u PDF formatu Proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Identifikacija Algoritama
Ako se susretnete sa kodom koji koristi pomeranje udesno i ulevo, ekskluzivno ili, i nekoliko aritmetičkih operacija, vrlo je verovatno da je to implementacija kriptografskog algoritma. Ovde će biti prikazani neki načini identifikacije algoritma koji se koristi bez potrebe za rekonstrukcijom svakog koraka.
API funkcije
CryptDeriveKey
Ako se koristi ova funkcija, možete pronaći koji algoritam se koristi proverom vrednosti drugog parametra:
Pogledajte ovde tabelu mogućih algoritama i njihovih dodeljenih vrednosti: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id
RtlCompressBuffer/RtlDecompressBuffer
Komprimuje i dekomprimuje dati bafer podataka.
CryptAcquireContext
Iz dokumentacije: Funkcija CryptAcquireContext se koristi za dobijanje ručke ka određenom kontejneru ključeva unutar određenog provajdera kriptografskih usluga (CSP). Ova vraćena ručka se koristi u pozivima CryptoAPI funkcija koje koriste izabrani CSP.
CryptCreateHash
Inicira heširanje niza podataka. Ako se koristi ova funkcija, možete pronaći koji algoritam se koristi proverom vrednosti drugog parametra:
Pogledajte ovde tabelu mogućih algoritama i njihovih dodeljenih vrednosti: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id
Konstante koda
Ponekad je vrlo jednostavno identifikovati algoritam zahvaljujući činjenici da mora koristiti posebnu i jedinstvenu vrednost.
Ako pretražite prvu konstantu na Google-u, dobićete sledeće:
Stoga, možete pretpostaviti da je dekompilirana funkcija kalkulator sha256.
Možete pretražiti bilo koju od drugih konstanti i verovatno ćete dobiti isti rezultat.
informacije o podacima
Ako kod nema značajne konstante, može se učitavati informacije iz .data sekcije.
Možete pristupiti tim podacima, grupisati prvi dword i pretražiti ga na Google-u kao što smo uradili u prethodnom odeljku:
U ovom slučaju, ako potražite 0xA56363C6, možete saznati da je povezano sa tabelama AES algoritma.
RC4 (Simetrična Kriptografija)
Karakteristike
Sastoji se od 3 glavna dela:
- Faza inicijalizacije/: Kreira tabelu vrednosti od 0x00 do 0xFF (ukupno 256 bajtova, 0x100). Ova tabela se obično naziva Substitution Box (ili SBox).
- Faza mešanja: Prolaziće kroz prethodno kreiranu tabelu (ponavljanje 0x100 iteracija, opet) modifikovanjem svake vrednosti sa polu-slučajnim bajtovima. Da bi se stvorili ovi polu-slučajni bajtovi, koristi se RC4 ključ. RC4 ključevi mogu biti dugački između 1 i 256 bajtova, mada se obično preporučuje da bude duži od 5 bajtova. Obično, RC4 ključevi su dužine 16 bajtova.
- XOR faza: Na kraju, plain-text ili šifrovani tekst se XOR-uje sa vrednostima koje su prethodno kreirane. Funkcija za šifrovanje i dešifrovanje je ista. Za to će se izvršiti ponavljanje kroz kreiranih 256 bajtova koliko god puta je potrebno. Ovo se obično prepoznaje u dekompiliranom kodu sa %256 (mod 256).
{% hint style="info" %} Da biste identifikovali RC4 u disasembliranom/dekompiliranom kodu, možete proveriti da li postoje 2 petlje veličine 0x100 (sa upotrebom ključa) i zatim XOR ulaznih podataka sa 256 vrednosti koje su prethodno kreirane u 2 petlje, verovatno koristeći %256 (mod 256) {% endhint %}
Faza inicijalizacije/Substitution Box: (Obratite pažnju na broj 256 koji se koristi kao brojač i kako je 0 upisano na svako mesto od 256 karaktera)
Faza mešanja:
XOR faza:
AES (Simetrična Kriptografija)
Karakteristike
- Upotreba substitution box-ova i lookup tabela
- Moguće je razlikovati AES zahvaljujući upotrebi specifičnih vrednosti lookup tabela (konstanti). Imajte na umu da se konstanta može čuvati u binarnom ili kreirati dinamički.
- Ključ za šifrovanje mora biti deljiv sa 16 (obično 32B) i obično se koristi IV od 16B.
SBox konstante
Serpent (Simetrična Kriptografija)
Karakteristike
- Retko je pronaći malver koji ga koristi, ali postoje primeri (Ursnif)
- Jednostavno je odrediti da li je algoritam Serpent ili ne na osnovu njeg
RSA (Asimetrična kriptografija)
Karakteristike
- Kompleksniji od simetričnih algoritama
- Nema konstanti! (teško je odrediti prilagođenu implementaciju)
- KANAL (kripto analizator) ne može pružiti podatke o RSA jer se oslanja na konstante.
Identifikacija pomoću poređenja
- U liniji 11 (levo) se nalazi
+7) >> 3
, što je isto kao u liniji 35 (desno):+7) / 8
- Linija 12 (levo) proverava da li je
modulus_len < 0x040
, a u liniji 36 (desno) proverava da li jeinputLen+11 > modulusLen
MD5 & SHA (hash)
Karakteristike
- 3 funkcije: Init, Update, Final
- Slične inicijalizacijske funkcije
Identifikacija
Init
Možete ih identifikovati proverom konstanti. Imajte na umu da sha_init ima 1 konstantu koju MD5 nema:
MD5 Transform
Primetite upotrebu više konstanti
CRC (hash)
- Manji i efikasniji jer je njegova funkcija pronalaženje slučajnih promena u podacima
- Koristi lookup tabele (tako da možete identifikovati konstante)
Identifikacija
Proverite konstante lookup tabele:
Algoritam za CRC hash izgleda ovako:
APLib (Kompresija)
Karakteristike
- Nema prepoznatljivih konstanti
- Možete pokušati da napišete algoritam u Pythonu i tražite slične stvari na internetu
Identifikacija
Grafikon je prilično velik:
Proverite 3 poređenja da biste ga prepoznali:
Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite oglašavanje vaše kompanije u HackTricks-u ili preuzmete HackTricks u PDF formatu, pogledajte SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.