Cryptographic/Compression Algorithms
Reading time: 6 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Identifying Algorithms
Ikiwa unamaliza katika msimbo ukitumia shift rights and lefts, xors na shughuli kadhaa za hesabu kuna uwezekano mkubwa kwamba ni utekelezaji wa algorithms ya cryptographic. Hapa kuna njia kadhaa za kutambua algorithm inayotumika bila kuhitaji kurudi nyuma kila hatua.
API functions
CryptDeriveKey
Ikiwa kazi hii inatumika, unaweza kupata ni algorithm gani inayotumika ukichunguza thamani ya parameter ya pili:
Angalia hapa jedwali la algorithms zinazowezekana na thamani zao zilizotolewa: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id
RtlCompressBuffer/RtlDecompressBuffer
Inabana na kufungua buffer fulani ya data.
CryptAcquireContext
Kutoka the docs: Kazi ya CryptAcquireContext inatumika kupata mkono wa chombo maalum cha funguo ndani ya mtoa huduma maalum wa cryptographic (CSP). Huu mkono uliorejeshwa unatumika katika wito wa kazi za CryptoAPI zinazotumia CSP iliyochaguliwa.
CryptCreateHash
Inaanzisha hashing ya mtiririko wa data. Ikiwa kazi hii inatumika, unaweza kupata ni algorithm gani inayotumika ukichunguza thamani ya parameter ya pili:
Angalia hapa jedwali la algorithms zinazowezekana na thamani zao zilizotolewa: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id
Code constants
Wakati mwingine ni rahisi sana kutambua algorithm kutokana na ukweli kwamba inahitaji kutumia thamani maalum na ya kipekee.
Ikiwa unatafuta constant ya kwanza kwenye Google hii ndiyo unapata:
Hivyo, unaweza kudhani kwamba kazi iliyotolewa ni sha256 calculator.
Unaweza kutafuta yoyote ya constants nyingine na utapata (labda) matokeo sawa.
data info
Ikiwa msimbo huna constant yoyote muhimu inaweza kuwa inapakia habari kutoka sehemu ya .data.
Unaweza kufikia data hiyo, kundi la dword ya kwanza na kutafuta hiyo kwenye google kama tulivyofanya katika sehemu iliyopita:
Katika kesi hii, ikiwa utaangalia 0xA56363C6 unaweza kupata kwamba inahusiana na meza za algorithm ya AES.
RC4 (Symmetric Crypt)
Characteristics
Imepangwa kwa sehemu 3 kuu:
- Initialization stage/: Inaunda meza ya thamani kutoka 0x00 hadi 0xFF (256bytes kwa jumla, 0x100). Meza hii kwa kawaida inaitwa Substitution Box (au SBox).
- Scrambling stage: Itafanya mzunguko kupitia meza iliyoundwa hapo awali (mzunguko wa 0x100 iterations, tena) ikibadilisha kila thamani kwa bytes za nadharia. Ili kuunda hizi bytes za nadharia, funguo ya RC4 inatumika. Funguo za RC4 zinaweza kuwa kati ya 1 na 256 bytes kwa urefu, hata hivyo kawaida inapendekezwa iwe juu ya 5 bytes. Kwa kawaida, funguo za RC4 ni 16 bytes kwa urefu.
- XOR stage: Hatimaye, maandiko ya wazi au cyphertext yanapigwa XOR na thamani zilizoundwa hapo awali. Kazi ya kuandika na kufungua ni sawa. Kwa hili, mzunguko kupitia bytes 256 zilizoundwa utafanywa mara nyingi kadri inavyohitajika. Hii kwa kawaida inatambuliwa katika msimbo uliotolewa na %256 (mod 256).
tip
Ili kutambua RC4 katika msimbo wa disassembly/decompiled unaweza kuangalia kwa mizunguko 2 ya ukubwa 0x100 (kwa kutumia funguo) na kisha XOR ya data ya ingizo na thamani 256 zilizoundwa hapo awali katika mizunguko 2 labda kwa kutumia %256 (mod 256)
Initialization stage/Substitution Box: (Kumbuka nambari 256 inayotumika kama hesabu na jinsi 0 inavyoandikwa katika kila mahali pa wahusika 256)
Scrambling Stage:
XOR Stage:
AES (Symmetric Crypt)
Characteristics
- Matumizi ya substitution boxes na lookup tables
- Inawezekana kutofautisha AES kutokana na matumizi ya thamani maalum za lookup table (constants). _Kumbuka kwamba constant inaweza kuhifadhiwa katika binary au kuundwa dynamically.
- Funguo ya kuandika lazima iwe inaweza kugawanywa kwa 16 (kawaida 32B) na kawaida IV ya 16B inatumika.
SBox constants
Serpent (Symmetric Crypt)
Characteristics
- Ni nadra kupata malware inayotumia lakini kuna mifano (Ursnif)
- Rahisi kubaini ikiwa algorithm ni Serpent au la kulingana na urefu wake (kazi ndefu sana)
Identifying
Katika picha ifuatayo angalia jinsi constant 0x9E3779B9 inavyotumika (kumbuka kwamba constant hii pia inatumika na algorithms nyingine za crypto kama TEA -Tiny Encryption Algorithm).
Pia angalia ukubwa wa mzunguko (132) na idadi ya shughuli za XOR katika maelekezo ya disassembly na katika mfano wa msimbo:
Kama ilivyotajwa hapo awali, msimbo huu unaweza kuonyeshwa ndani ya decompiler yoyote kama kazi ndefu sana kwani hakuna kuruka ndani yake. Msimbo uliotolewa unaweza kuonekana kama ifuatavyo:
Hivyo, inawezekana kutambua algorithm hii ukichunguza nambari ya uchawi na XORs za awali, kuona kazi ndefu sana na kulinganisha baadhi ya maelekezo ya kazi ndefu na utekelezaji (kama shift left kwa 7 na rotate left kwa 22).
RSA (Asymmetric Crypt)
Characteristics
- Ngumu zaidi kuliko algorithms za symmetric
- Hakuna constants! (utekelezaji wa kawaida ni mgumu kubaini)
- KANAL (mchambuzi wa crypto) inashindwa kuonyesha vidokezo juu ya RSA na inategemea constants.
Identifying by comparisons
- Katika mstari wa 11 (kushoto) kuna
+7) >> 3
ambayo ni sawa na katika mstari wa 35 (kulia):+7) / 8
- Mstari wa 12 (kushoto) unakagua ikiwa
modulus_len < 0x040
na katika mstari wa 36 (kulia) unakagua ikiwainputLen+11 > modulusLen
MD5 & SHA (hash)
Characteristics
- Kazi 3: Init, Update, Final
- Kazi za kuanzisha zinazofanana
Identify
Init
Unaweza kutambua zote mbili ukichunguza constants. Kumbuka kwamba sha_init ina constant 1 ambayo MD5 haina:
MD5 Transform
Kumbuka matumizi ya constants zaidi
CRC (hash)
- Ndogo na yenye ufanisi kwani kazi yake ni kupata mabadiliko yasiyokusudiwa katika data
- Inatumia lookup tables (hivyo unaweza kutambua constants)
Identify
Angalia constants za lookup table:
Algorithm ya hash ya CRC inaonekana kama:
APLib (Compression)
Characteristics
- Hakuna constants zinazotambulika
- Unaweza kujaribu kuandika algorithm hiyo katika python na kutafuta mambo yanayofanana mtandaoni
Identify
Grafu ni kubwa sana:
Angalia kulinganisha 3 kutambua:
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.