Virus for Linux

Tárgyak internete - az igazi trend az utóbbi időben. Szinte mindenütt, akkor használja a Linux kernel. Azonban papírokat vírusírók és a Shell-kódoló ez a platform viszonylag kicsi. Azt hiszed, írja shellcode Linux - csak az elit? Lássuk, hogyan kell írni egy vírus Linuxra!

Virus for Linux

BASE, hogy írjon egy vírus LINUXON

Mit kell?

Összeállításához shellcode, szükségünk van a fordító és linker. Fogjuk használni NASM és ld. A teszt a shellcode fogunk írni egy kis programot északi annak összeállítása szükségünk gcc. Szüksége lesz rasm2 (a keret része radare2) néhány tesztet. Írásra, akkor használja a Python támogató funkciókat.

Mi az új x64?

Pontosabban, az összes 32 bites általános célú regiszterek kerülnek, hozzáadjuk a hosszított változat (Rax, rbx, RCX, RDX, RSI, Érdi, RBP, RSP) és számos új, általános célú regiszterek (R8, R9, R10, R11 , R12, R13, R14, R15).

Van egy új hívási konvenciót (ellentétben az x86 architektúra, ez csak egy). Eszerint a függvény hívja minden regiszter meghatározott célokra használt, nevezetesen:

Syscall. Mi az? Hogyan? Miért?

Syscall - ez az az út, amely a felhasználói módú együttműködik a Linux kernel. Ezt alkalmazzák a különböző feladatok: IO művelet fájlok olvasására és írására, nyitó és záró programok, munkamemória, valamint a hálózati és így tovább. Annak érdekében, hogy végre syscall. van szükség:

• letölthető a megfelelő funkció számát regiszterben Rax;
• Helyezze a bemeneti paraméterek nyilvántartásokban;
• kiváltó megszakítás 0x80 szám alatt (verziótól kezdődően 2.6 kernel végzi hívja syscall).

Nem releváns syscall-funkció is megtalálható, például itt.

Mint látható, nyomja 0x00 kódot összeállítani a következő byte 6a 00. Ha szoktuk ezt a kódot a shell kód nem fog működni. Funkció másolni mindent, ami a bájt értéke 0x00.

Úgy tűnik, ez minden.

Csak csináld!

Ha elolvasod ezt a pontot, akkor már kell egy képet arról, hogyan fog működni a shellcode.

Az első lépés az, hogy előkészítse az opciókat az execve () funkciót, és azután helyesen helyezze el őket a verem. A függvény a következő lesz:


A második paraméter egy tömb argv []. Az első elem a tömb tartalmaz egy útvonalat egy futtatható fájlt.

A harmadik paraméter információt a környezet, akkor nem kell nekünk, ezért null lesz.

Először is, kapunk egy nulla bájtot. Nem tudjuk használni a szerkezet a forma mov eax, 0x00, mert ez vezet a null-byte-kódot, így fogjuk használni a következő nyilatkozatot:

Hagyja a regiszter értéke rdx - még mindig szükség van, mint egy karakterláncot és a végső érték a harmadik paraméter (ami lehet nulla).

Annak érdekében, hogy viszont a húr, és átalakítani, hogy hex. Használhatja a következő függvényt Python:


Hívja ezt a funkciót /bin/sh:>>>rev.rev_str("/bin/sh „)

Kapcsolódó cikkek