I'm interested if it is possible to test TCP server with Avalanche. It
listens for connections and reads data sent by client to fixed-size
buffer. This can lead to buffer overflow with code execution.
More details (in Russian) below. And here are some questions:
1. Is client-only limitation principal or temporary and easy to
overcome? The difference I see is only in the way of connection
establishing.
2. What is your opinion 'bout code-exec exploits generation like
http://security.ece.cmu.edu/aeg/? Do you want to build the free tool of
that sort? 2.5. Is valgrind a good platform for such efforts?
3. Or do you know already built tools for that?
Vadim
05.11.2011 01:29, Михаил Ермаков пишет:
> Добрый вечер!
>
> К сожалению, подход Avalanche позволяет анализировать только приложения-клиенты - каждый запуск тестирует реакцию клиента, сделавшего конкретный запрос, на все возможные (корректные и некорректные) ответы от сервера на этот запрос. Подобное тестирование осуществляется перехватом сообщения от сервера и подменой его содержимого. Именно поэтому в Вашем случае сервер обрушился, когда Вы забросали его информацией, однако далее ничего не происходило, поскольку ни из какого источника не приходило сообщений, а без реальных сообщений Avalanche не м
ожет осуществить подмену их содержимого.
>
> Да, список рассылки существует - http://groups.google.com/group/avalanche-users.
>
> Писали ли Вы всем участникам проекта Avalanche, в частности, на адрес i...@inbox.ru? Поддержкой сокетов занимался именно хозяин этого адреса и он сможет помочь Вам в большей степени, чем я, однако в любом случае, я буду рад ответить на Ваши вопросы.
>
> 04.11.2011, 23:12, "Vadim E. Evard"<v.e....@gmail.com>:
>> Добрый день.
>>
>> С некоторых пор мне интересна тема динамического анализа и, в частности,
>> проект Avalanche. Особенно интересно, рассматриваете ли вы возможность
>> генерации эксплоитов, приводящих к исполнению кода?
>>
>> Пока я столкнулся с чисто технической сложностью. К письму приложен
>> архив с исходным кодом простого tcp-сервера, уязвимого к переполнению
>> стекового буфера. За основу взято руководство
>> http://redstack.net/blog/2008/01/24/writing-exploits-for-metasploit-30/.
>> В другом вложении можно найти bof_server_ce.rb — модуль Metasploit,
>> написанный вручную для Linux/x86. Очевидно, ошибку подобного рода очень
>> легко найти программно. К сожалению, я не смог получить соответствующий
>> результат в Avalanche.
>>
>> Я запускал сервер так: ./bin/avalanche --sockets --host=127.0.0.1
>> --port=12345 ~/buf-of-server/lbof 12345
>>
>> Обрушивал так: perl -e 'print "A"x1000' | nc localhost 12345, ^C
>> При этом система выводила:
>> Crash detected.
>> Dumping stack trace to file stacktrace_0.log
>> Dumping an exploit to file exploit_0
>> Starting iteration 0
>>
>> Затем очень долго ничего не происходило. Уменьшив размер буфера до 10
>> байт, я не смог ускорить процесс.
>>
>> Вот что сгенерировал AValanche:
>> $ xxd exploit_0
>> 0000000: 0000 0000 ....
>>
>> Это совсем не похоже на то, что генерируется для уязвимого клиента. Но
>> там и ошибка другая.
>>
>> Вопросы:
>> 1. Я столкнулся с принципиальной или же легко преодолимой трудностью?
>> 2. Каково ваше отношение к возможности генерации "боевых" эксплоитов?
>> 3. Есть ли у команды список рассылки, чтобы направлять в будущем
>> подобные письма туда, а не лично Вам?
>>
>> С уважением,
>> Вадим Евард
>
05.11.2011 13:10, Vadim E. Evard пишет:
1. Technically, it should be possible, but for each server application
you'll have to create a client application which will be active during
avalanche analysis. It will be continually trying to connect to the
server and sent some data. The main idea behind testing application
with Avalanche is that you only need a working binary and initial
input to run the analysis. This works perfectly for client
applications but doesn't for server applications.
2. Again, Avalanche requires only a working binary to perform analysis
and we consider this to be a distinctive feature of our project. It is
highly unlikely that we will be introducing the approach used in AEG.
2.5. In my opinion the answer to this question is rather "no" than
"yes", due to the nature of valgrind. However, this of course may
prove to be wrong - you will be better asking on valgrind-users list
(https://lists.sourceforge.net/lists/listinfo/valgrind-users), where
you can get the advice of active valgrind developers.
3. I'm afraid I don't know any besides AEG (we've read about it before
when we were comparing it to KLEE).
On Nov 8, 6:34 am, "Vadim E. Evard" <v.e.ev...@gmail.com> wrote:
> Should I think this subject is not interesting for Avalanche team at all?
>
> 05.11.2011 13:10, Vadim E. Evard пишет:
>
>
>
>
>
>
>
> > Hello devs,
>
> > I'm interested if it is possible to test TCP server with Avalanche. It
> > listens for connections and reads data sent by client to fixed-size
> > buffer. This can lead to buffer overflow with code execution.
>
> > More details (in Russian) below. And here are some questions:
>
> > 1. Is client-only limitation principal or temporary and easy to
> > overcome? The difference I see is only in the way of connection
> > establishing.
>
> > 2. What is your opinion 'bout code-exec exploits generation like
> >http://security.ece.cmu.edu/aeg/?Do you want to build the free tool of
> > that sort? 2.5. Is valgrind a good platform for such efforts?
>
> > 3. Or do you know already built tools for that?
>
> > Vadim
>
> > 05.11.2011 01:29, Михаил Ермаков пишет:
> >> Добрый вечер!
>
> >> К сожалению, подход Avalanche позволяет анализировать только
> >> приложения-клиенты - каждый запуск тестирует реакцию клиента,
> >> сделавшего конкретный запрос, на все возможные (корректные и
> >> некорректные) ответы от сервера на этот запрос. Подобное тестирование
> >> осуществляется перехватом сообщения от сервера и подменой его
> >> содержимого. Именно поэтому в Вашем случае сервер обрушился, когда Вы
> >> забросали его информацией, однако далее ничего не происходило,
> >> поскольку ни из какого источника не приходило сообщений, а без
> >> реальных сообщений Avalanche не м
> > ожет осуществить подмену их содержимого.
>
> >> Да, список рассылки существует -
> >>http://groups.google.com/group/avalanche-users.
>
> >> Писали ли Вы всем участникам проекта Avalanche, в частности, на адрес
> >> i...@inbox.ru? Поддержкой сокетов занимался именно хозяин этого адреса
> >> и он сможет помочь Вам в большей степени, чем я, однако в любом
> >> случае, я буду рад ответить на Ваши вопросы.
>
> >> 04.11.2011, 23:12, "Vadim E. Evard"<v.e.ev...@gmail.com>:
> >>> Добрый день.
>
> >>> С некоторых пор мне интересна тема динамического анализа и, в частности,
> >>> проект Avalanche. Особенно интересно, рассматриваете ли вы возможность
> >>> генерации эксплоитов, приводящих к исполнению кода?
>
> >>> Пока я столкнулся с чисто технической сложностью. К письму приложен
> >>> архив с исходным кодом простого tcp-сервера, уязвимого к переполнению
> >>> стекового буфера. За основу взято руководство
> >>>http://redstack.net/blog/2008/01/24/writing-exploits-for-metasploit-30/.
> >>> В другом вложении можно найти bof_server_ce.rb -- модуль Metasploit,