Linux. API монитор силами WINE

CLAY
Оффлайн
Регистрация
25.01.17
Сообщения
763
Реакции
225
Репутация
292
Linux. API монитор силами WINE

API монитор позволяет следить за этим интерфейсом, для того, чтобы узнать, какие функции вызывались программой и с какими параметрами. При работе с вредоносным кодом вещь просто незаменимая. Если нет времени на дизассемблирование и детальное разбирательство в функционале вредоноса, бывает очень удобно просто запустить его и посмотреть лог API монитора. В случае с тривиальными троянцами такой лог фактически будет являться ничем иным, как полным описанием функциональности троянца.

Добрый день. Сегодня я расскажу о такой полезной вещи, как API монитор. API это application programming interface. Подробнее можно почитать в вики.

В данной статье пойдет речь о том, как можно использовать в качестве такого API монитора известную программу WINE.
You must be registered for see images attach

Для начала несколько слов о том, что такое Wine. Это альтернативная реализация того, что известно нам под именем Windows. Как работает операционная система? Вы пишите программу. Если возникла необходимость записать информацию в файл, то вы просто используете функцию для записи в файл. Дальше система сама передаст нужные сигналы драйверу диска и запись будет произведена. Так вот, создателям Wine пришлось написать собственные реализации функций, которые используются при программировании приложений для Windows. При этом в Wine реализованы широкие возможности отладки. Как самого Wine, так и запускаемых с его помощью программ.

Рассмотрим пример на Ubuntu 10.10. Итак, начинается все с установки Wine. Тут ничего необычного - находим программу в Синаптике и отмечаем для установки:

После установки запускаем конфигуратор из соответствующего пункта меню:

При первом запуске это займет какое-то время:

При этом в домашнем каталоге пользователя будет создан подкаталог .wine.

В него и будут помещены все файлы лже-виндовса.

В Линукс каталоги, имя которых начинается с точки - скрыты. Для того, чтобы их увидеть нужно включить отображение скрытых файлов:

После того, как конфигуратор запустится нужно внимательно исправить пути к стандартным каталогам. Менять их лучше на что-то находящее внутри каталога .wine. И вот почему: после таких изменений вы можете легко скопировать каталог .wine с целью будущего восстановления. Сразу после установки Wine займет что-то около 40 мегабайт. Это вам не виртуалка с полноценной Win7. Можно хоть после каждого запуска удалять-восстанавливать - это займет пару секунд.

Кроме этого убедитесь, что в разделе дисков нет ничего лишнего - все-таки планируем вирусы запускать, маловероятно, что что-то расползется, но осторожность проявить стоит.

После того, как сделаете резервную копию каталога .wine (вы ведь её сделаете?) можно приступать к исследованиям.

Запускаем терминал и переходим на диск "С" нашего воображаемого виндовса: cd .wine/drive_c

Управлять отладчиком Wine можно в помощью служебной переменной WINEDEBUG. В нее нужно передать каналы, которые будут отслеживаться. Доступны все мыслимые каналы - они перечислены в официальной вики проекта. Используются они так:

Пишем WINEDEBUG=+file, и отладчик будет выводить все, что касается канала "file", то есть дисковые операции. Можно перечислить сразу несколько каналов, через запятую. Для исследования используем импровизированный "даунлоадер" - wget, который будет качать страницу google.com. Вся магия кроется в одной строчке:

WINEDEBUG=+file,+reg,+network wine wget.exe google.com 2>log.txt

WINEDEBUG=+file,+reg,+network - выбранные каналы (операции с файлами, реестром и сетью) wine wget.exe google.com - передаем вайну название программы, которую нужно запустить, а затем передаем этой программе, какой файл качать.

2>log.txt - перенаправить debug-вывод в файл.

Так как выполнение программы может занимать разное время, для того, чтобы убедиться, что выполнение завершено можно смотреть список процессов в системном мониторе:

Нас интересуют следующие процессы:

Как только они исчезнут из списка, значит можно приступать к работе с логом.

Лог получается очень объемным. Кто видел лог WinDbg без фильтров поймет о чем я говорю. Но поискав по ключевому "http" находим следующий участок:

Видно, куда совершается обращение ( ), видно, как будет называться сохраняемый файл (index.html), а так же путь, по которому он будет располагаться. Причем путь представлен и для виндовс-версии (\\??\\C:\\) и для линукс (/home/test/.wine/dosdevices/c:/). Так же немаловажно, что в логе отображается адрес, на который производилось обращение (Location: [following]):

А так же адрес, с которого производилась закачка (Location: [following])

То есть можно проследить все перенаправления.

Можно еще написать скрипт, который ловко перелопатит получающийся даже на таком простом примере мегабайтовый лог и предоставит красиво оформленный отчет о работе вредоноса.
 
Сверху Снизу