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!
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 „)