JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Та же память после выполнения <strong>JIT</strong>-кода. Теперь<br />
тут шеллкод из метасплойта<br />
Любой шеллкод из Metasploit подходит<br />
сдвига на каждые четыре байта копируемого шеллкода. Надо искать<br />
другой путь. Можно, например, заменить все сдвиги на одну<br />
операцию умножения. То есть 0x0000ABCD*0x10000=0xABCD0000.<br />
Значит, можно написать <strong>JIT</strong>-шеллкод, который заносит произвольные<br />
значения в регистры ECX и EAX, а потом копирует по адресу<br />
ECX значение EAX. Затем добавляем к ECX четыре байта и заносим<br />
в EAX следующую часть метасплойтовского шеллкода.<br />
ÀÂÒÎÌÀÒÈÇÀÖÈß<br />
Теперь пора написать генератор шеллкода, который согласно<br />
вышеупомянутому алгоритму будет генерить <strong>JIT</strong>-шеллкод. Начнем<br />
труд! В метасплойте генерируем шеллкод в формате Perl. Я выбрал<br />
запуск калькулятора, без всяких кодировок шеллкода. Нам это ни<br />
к чему, во-первых, потому что <strong>JIT</strong>-шеллкод и так неслабо перекодирует<br />
оригинальный шеллкод — ни один антивирус не узнает.<br />
Во-вторых, размер кода меньше. Итак, есть шеллкод в формате<br />
Perl, который мы запихнем в переменную $shellcode. Зададим<br />
старшие байты страницы, куда будем копировать этот шеллкод.<br />
Я выбрал 0x080A0000. Так как младшие байты нас не интересуют,<br />
задаю только старшие:<br />
#Address with RWX - place for shellcode<br />
$addr="\x08\x0A"; #0x080A0000<br />
Поскольку весь шеллкод копируем по четыре байта, необходимо выровнять<br />
его, для этого считаем размер шеллкода и делим с остатком на<br />
4. Если остаток 1, 2 или 3, то добавляем к концу шеллкода мусора:<br />
$len=length($shellcode);<br />
$add=$len % 4;<br />
for($i=0;$i