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

Тема в разделе "Linux", создана пользователем CLAY, 1 апр 2017.

  1. CLAY

    CLAY Member

    Сообщения:
    419
    Симпатии:
    5
    Linux. API монитор силами WINE

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

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

    В данной статье пойдет речь о том, как можно использовать в качестве такого API монитора известную программу WINE.

    Для начала несколько слов о том, что такое 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 - перенаправить debug-вывод в файл.

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

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

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

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

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

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

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

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

Поделиться этой страницей