tags: windows - malware analysis
Анализ шифровальщика Sepsis
Малварь была впервые обнаружена 14 мая, 2018 года, MalwareHunterTeam. Скачиваем с сайта Virusshare образец (или в репе Sepsis), со следующими значениями хэшей:
MD5 1221ac9d607af73c65fd6c62bec3d249
SHA1 518d5a0a8025147b9e29821bccdaf3b42c0d01db
SHA256 3c7d9ecd35b21a2a8fac7cce4fdb3e11c1950d5a02a0c0b369f4082acf00bf9a
Анализ проводился на Windows 7 Ultimate SP1 64-bit, с целью не только узнать ЧТО делает малварь, но и КАК. Файл является шифровальщиком, результат работы которого, можно увидеть на скрине.
Все файлы шифруются и к именам в конце добавляется .[Sepsis@protonmail.com].SEPSIS, винда крашится.
Статический анализ.
Для начала откроем файл в PPEE, плагин FileInfo.
Как мы видим, 51 из 68 антивирусов определяют файл, как вредоносный, ransom (шифровальщик).
Перейдем к suspicious strings.
Видим строку, -KEY- … - END PUBLIC KEY-. Это публичный ключ, которым скорее всего шифруются данные.
Строка, похожа на аргумент для cmd.exe:
admin.exe delete shadows /all /quiet & bcdedit.exe /set {default} recoveryenabled no & bcdedit.exe /set {default} bootstatuspolicy ignoreallfailures
admin.exe delete shadows /all /quiet
- удаление всех бэкапов системы, чтобы предотвратить восстановление испорченых файлов.
bcdedit.exe /set {default} recoveryenabled no
- отключается режим восстановления.
bcdedit.exe /set {default} bootstatuspolicy ignoreallfailures
- отключает появление Windows Error Recovery screen.
Откроем URL strings.
По строке
http://www.coindesk.com/information/how-can-i-buy-bitcoins/'>http://www.coindesk.com/information/how-can-i-buy-bitcoins/</a>
можно понять, что у юзера будут просить биткоины и дадут ссылку на то, как это сделать.
Откроем Registry strings.
Видим строку Software\Classes\mscfile\shell\open\command
. Ветка реестра Software\Classes
содержит информацию о том, какие программы, отвечают за обработку определенных файловых типов. То есть, малварь скорее всего добавляет какую-то команду, которая будет выполняться каждый раз, при открытии .msc файла. Возможно, малварь влияет на работу процесса Winlogon, который ответственнен за вход/выход из системы.
Структра PE файла, заголовки в норме.
Больше ничего интересного PPEE не показывает. Не стоит надеяться на получение полной информации, с помощью PPEE или других утилит, но для получения первоначальной информации и информации о том, что из себя представляет файл этого может быть достаточно. Строки могут быть добавлены специально, чтобы запутать или восстанавливаться динамически, во время работы, или быть зашифрованы. Строки в файле можно также посмотреть с помощью программы strings, но более мощным ее аналогом является FLOSS, от компании FireEye. Она может показать закодированные строки в бинарнике. Запускаем ее командой, с записью в файл, так как у нее очень большой вывод.
floss malware > c:\floss_output.txt
Откроем и посмотрим полученный файл. Видим html, с таким содержанием.
`<body>`
`<div class='header'>`
`<div style='color:yellow'>Welcome to Sepsis Ransomware!</div>`
`<div style='color:blue'>All your files have been encrypted!</div>`
`</div>`
`<div class='bold'>All your files have been encrypted due to a security problem with your PC. If you want to restore them, write us to the e-mail <span class='mark'>Sepsis@protonmail.com</span></div> <div class='bold'>Write this ID in the title of your message <span class='mark'>16E734E0</span></div>`
`<div class='bold'>In case of no answer in 24 hours write us to theese e-mails:<span class='mark'>sepsis@airmail.cc</span></div>`
`<div>`
`The price depends on how fast you write to us. You have to pay for decryption in Bitcoins. After payment we will send you the decryption tool that will decrypt all your files.`
`</div>`
`<div class='note info'>`
`<div class='title'>Free decryption as guarantee</div>`
`<ul>Before paying you can send us up to 5 files for free decryption. The total size of files must be less than 10Mb (non archived), and files should not contain valuable information. (databases,backups, large excel sheets, etc.) </ul>`
`</div>`
`<div class='note info'>`
`<div class='title'>How to obtain Bitcoins</div>`
`<ul>`
`The easiest way to buy bitcoins is LocalBitcoins site. You have to register, click 'Buy bitcoins', and select the seller by payment method and price. `
`<br><a href='https://localbitcoins.com/buy_bitcoins'>https://localbitcoins.com/buy_bitcoins</a>`
`<br> Also you can find other places to buy Bitcoins and beginners guide here:`
`<br><a href='http://www.coindesk.com/information/how-can-i-buy-bitcoins/'>http://www.coindesk.com/information/how-can-i-buy-bitcoins/</a>`
`</ul>`
`</div>`
`<div class='note alert'>`
`<div class='title'>Attention!</div>`
`<ul>`
`<li>Do not rename encrypted files.</li>`
`<li>Do not try to decrypt your data using third party software, it may cause permanent data loss.</li>`
`<li>Decryption of your files with the help of third parties may cause increased price (they add their fee to our) or you can become a victim of a scam.</li>`
`</ul>`
`</div>`
`</body>`
Похоже на сообщение, которое будет показываться жертве, после шифрования файлов. Еще видим строку SeDebugPrivilege
, а значит малварь возможно подключается к другим процессам. Строка eventvwr.exe
сигнализирует о возможной попытке повышения привилегий. Видим также список, похожий на список папок:
Windows
MSOCache
PerfLogs
DVD Maker
Internet Explorer
Reference Assemblies
Windows Defender
Windows Mail
Windows Media Player
Windows NT
Windows Sidebar
Startup
Temp
Program Files
Program Files (x86)
наверняка используемый, как блеклист при шифровании.
Откроем файл в PEiD, чтобы узнать, не запакован ли он.
DIE показывает нам, что программа написана на С/С++, это позволит хорошо ее декомпилировать в IDA.
Догадаться о том, что делает малварь не запуская, можно путем исследования импортируемых библиотек и их функций. Не всегда это может помочь, так как малварь может быть упакована, но в нашем случае нам повезло.
crypt32.dll
для шифрования, advapi32.dll
работа с реестром.
Динамический анализ.
Логика работы малвари на псевдокоде.
1 if (elevated)
2 copy_to(C:\Windows\svchost.exe)
3 add_to_autorun()
4 exec(C:\Windows\svchost.exe)
5 sleep()
6 else
7 copy_to(%TEMP%\svchost.exe)
8 add_to_autorun()
9 if (!elevated)
10 run_as_elevated()
11 sleep()
12 if (run_first)
13 run_first = FALSE
14 else
15 exit()
16 encrypt_all_data()
17 if (elevated)
18 wipe_backups()
19 set_process_critical()
20 rename_all_files()
21 show_user_manual()
22 exit()
Как мы видим, малварь проверяет, запущена ли она с повышенными привелегиями, строки 1, 9, 17. Проверяя, с помощью TokenInformation, после вызова GetTokenInformation, с параметром TokenElevation.
Первый запуск, на компьютере жертвы, предполагается без повышенных прав, поэтому малварь копируется во временную папку (строка 7), под именем svchost.exe
и добавляется в автозагрузку (строка 8), добавлением в HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
пути %TEMP%\svchost.exe
.
Winlogon это процесс, ответственный за сессию пользователя ОС, за вход и выход из системы. При загрузке ОС, Winlogon запускает то, что прописано в ключе Shell. Соответственно запускается и малварь.
В строке 9 снова идет проверка на наличие повышенных прав и если их нет, то малварь с ними и запускается (строка 10). Как же малварь это делает? Делается это с помощью добавления в ветку реестраHKCU\\Software\\Classes\\mscfile\\shell\\open\\command
. Все что прописывается в этой ветке будет запущено при открытии файлов типа .msc. Далее запускается eventvwr.exe
, виндовая системная утилита, которая запускает Microsoft Management Console (mmc.exe), которая загружает сразу же .msc файл. Магия в том, что eventvwr.exe
скомпилирована с autoElevated = True, в манифесте, что позволяет ей запускаться с повышенными правами, минуя UAC и не показывая юзеру окно, требующее согласие на запуск. Тем самым малварь запускает себя ВТОРОЙ раз. В строке 11 малварь засыпает и в дело вступает второй инстанс малвари. Первый же инстанс, после спячки и проверке в 12 строке завершается в строке 15. Проверка на повторный запуск происходит с помощью создания мютекса, с уникальным именем HJG><JkFWYIguiohgt89573gujhuy78^*(&(^&^$
и проверкой доступности на открытие.
Теперь разберем работу малвари, после повторного запуска. Как мы видим, первый запуск был необходим для добавления в автозагрузку и запуску себя с повышенными правами. Запустившись в повышенными правами, малварь нагло копирует себя в C:\Windows\svchost.exe
, не генерируя никаких всплывающих окон.
Как мы видим, после выполнения CopyFile, файл C:\Windows\svchost.exe имеет такой же хэш, как и изначальный файл.
В строке 16 происходит шифрование всех файлов, за исключением файлов, в папках
Windows
MSOCache
PerfLogs
DVD Maker
Internet Explorer
Reference Assemblies
Windows Defender
Windows Mail
Windows Media Player
Windows NT
Windows Sidebar
Startup
Temp
Program Files
Program Files (x86)
Импортируется замеченый нами, при статическом анализе, публичный ключ.
Файлы шифруются функцией CryptEncrypt
.
В строке 18 выполняется удаление всех имеющихся бэкапов, с помощью команды, которую мы видели ранее - /c vssadmin.exe delete shadows /all /quiet & bcdedit.exe /set {default} recoveryenabled no & bcdedit.exe /set {default} bootstatuspolicy ignoreallfailures
. Это делается, чтобы юзер не смог восстановить зашифрованные файлы.
Строка 19, с помощью вызова недокументированной функции RtlSetProcessIsCritical, главный процесс делается системным. Когда малварь завершает свою работу, она завершает свой процесс, а так как он системный, то система крашится и перезагружается.
Строка 20, На каждый существующий диск в системе создается поток, в котором происходит переименование всех файлов, в каждой папке, за исключением списка выше.
Строка 21, создается файл с html содержимым, которое мы видели ранее, при статическом анализе и отображается юзеру.
Восстановление системы
1) Удаление файлов %TEMP%\svchost.exe
, C:\Windows\svchost.exe
Уникальным признаком определения малвари может служить имя мютекса "HJG><JkFWYIguiohgt89573gujhuy78^*(&(^&^$"
.