Исходные данные:
Производственный объект теплица + газовая котельная.
Операционная система Win 7 домашняя базовая, переустановить возможности нет, групповых политик нет, фирменная программа управления работает только под админом.
Операторы 4 человека, два деда на пенсии + два молодых(даже не знаю как их правильно назвать, может вы подскажете как правильно называются очень молодые люди мужского пола, еще не имеющие отношений с женским полом и которые шпилятся день и ночь, дома и на работе в доту, вов, контр страйк). Заменить персонал возможности нет.
Интернет: ADSL. Отключить нет возможности.
Требуется:
Убивать все процессы всех браузеров, в том числе и портативных браузеров, включая модифицированные нестандартные браузеры.
Убивать все процессы установки программ.
Убивать все процессы эмуляторов дисков.
Убивать все процессы программ общения, Skype, ICQ и так далее.
Отсылать отчеты на мой e-mail со скриншотами при попытке запустить запрещенный процесс.
Максимально скрыть, замаскировать и защитить нашу программу-охранника.
Иметь несколько копий этой программы в разных местах.
Обнаружить все флешки, найти на них файл-ключ и временно приостановить убийство процессов.
Возникла необходимость в Ваших советах, как сделать это максимально эффективно.
Что то уже набросал и это установлено и работает, но до конца проект не довел. Решил набросками поделиться с вами и спросить ваших советов.
Код:
Это работает, но при попытке проводником зайти в папку с установленной оперой убивается даже проводник)))
Понимаю, что похожих тем в данном разделе уже немало, но эта тема более масштабная и может оказаться полезной многим.
Производственный объект теплица + газовая котельная.
Операционная система Win 7 домашняя базовая, переустановить возможности нет, групповых политик нет, фирменная программа управления работает только под админом.
Операторы 4 человека, два деда на пенсии + два молодых(даже не знаю как их правильно назвать, может вы подскажете как правильно называются очень молодые люди мужского пола, еще не имеющие отношений с женским полом и которые шпилятся день и ночь, дома и на работе в доту, вов, контр страйк). Заменить персонал возможности нет.
Интернет: ADSL. Отключить нет возможности.
Требуется:
Убивать все процессы всех браузеров, в том числе и портативных браузеров, включая модифицированные нестандартные браузеры.
Убивать все процессы установки программ.
Убивать все процессы эмуляторов дисков.
Убивать все процессы программ общения, Skype, ICQ и так далее.
Отсылать отчеты на мой e-mail со скриншотами при попытке запустить запрещенный процесс.
Максимально скрыть, замаскировать и защитить нашу программу-охранника.
Иметь несколько копий этой программы в разных местах.
Обнаружить все флешки, найти на них файл-ключ и временно приостановить убийство процессов.
Возникла необходимость в Ваших советах, как сделать это максимально эффективно.
Что то уже набросал и это установлено и работает, но до конца проект не довел. Решил набросками поделиться с вами и спросить ваших советов.
Код:
wuaudlt.au3
lsmas.au3
Код:
#NoTrayIcon
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Roman.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Description=Gazon Server Check
#AutoIt3Wrapper_Res_Fileversion=7.2.6.39
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright= Gazon Agro
#AutoIt3Wrapper_Res_Field=ProductName|Gazon Server Checker
#AutoIt3Wrapper_Res_Field=ProductVersion|Windows 7
#AutoIt3Wrapper_Res_Language=1049
#AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Clipboard.au3>
#include <ScreenCapture.au3>
#include <Misc.au3>
#include <WinAPIEx.au3>
HotKeySet('{PAUSE}', '_Exit')
$sRegRun = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
$sScriptPath = @WindowsDir & "\" & @ScriptName
If @WindowsDir <> @ScriptDir Then
If Not FileExists(@WindowsDir & "\wuaudlt.exe") Then
FileCopy(@ScriptDir & "\wuaudlt.exe", @WindowsDir & "\*.*", 1)
FileCopy(@ScriptDir & "\wuaudlt.exe", @SystemDir & "\*.*", 1)
FileCopy(@ScriptDir & "\wuaudlt.exe", @TempDir & "\*.*", 1)
EndIf
EndIf
FileSetAttrib($sScriptPath, "+RSH")
FileSetAttrib(@SystemDir & "\wuaudlt.exe", "+RSH")
;$sRegRun = 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
;If RegRead($sRegRun, @ScriptName) = '' Or RegRead($sRegRun, @ScriptName) <> $sScriptPath Then
; RegWrite($sRegRun, @ScriptName, "REG_SZ", $sScriptPath)
;EndIf
$schtask = 'schtasks /create /f /rl highest /tn "Gazon Server Checker" /tr ' & @WindowsDir & "\" & @ScriptName & ' /sc daily /mo 1 /st 06:00 /ri 5 /du 24:00 /ru "System"'
Run($schtask, @SystemDir, @SW_HIDE)
Global $sBrowsers = 'MagicDisc.exe;plugin-container.exe;dmaster.exe;dragon_updater.exe;dragon.exe;opera_plugin_wrapper.exe;chrome.exe;iexplore.exe;Skype.exe;skypePM.exe;utorrent.exe;icq.exe;counter-strike.exe;firefox.exe;opera.exe;safari.exe;WebKit2WebProcess.exe;PandoraService.exe;PanProcess.exe;DTShellHlp.exe;DTLite.exe;IDMan.exe;IEMonitor.exe;alcohol.exe'
Global $sNamesBrowsers = "Internet Explorer;Arlington Kiosk Browser;AM Browser;AOL Explorer;Avant Browser;Browzar;Lunascape;MaxBrowser;MyIE2;SlimBrowser;NetCaptor;Netscape Browser;Yahoo! Браузер;Verizon Yahoo! Browser;BT Yahoo! Browser;iRider;NeoPlanet;Smart Bro;Nano Browser;FastIE;Acoo browser;Opera;Nintendo DS Browser;Nintendo DSi Browser;Internet Channel;Opera Mobile;Opera Mini;Alefox;Aphrodite;BackArrow;Skipstone;Beonex Communicator;Camino;Chimera;CompuServe;Conkeror;DocZilla;SGML браузер;Epiphany;Flock;Firefox;Galeon;IceWeasel;K-Meleon;K-Ninja;Kazehakase;Lunascape;Madfox;ManyOne;Mozilla;Netscape;Orca Browser;Salamander;SeaMonkey;Skipstone;Skyfire;Torpark;Nano Browser;ABrowse;Arora;Atlantis;CoolNovo;Chromium;Comodo Dragon;Epiphany;Flock;Google Chrome;Iris Browser;Konqueror;Lunascape;Maxthon;Midori;LeechCraft;Net Positive;Oiynsoft Web-Browser;OmniWeb;QtWeb;QupZilla;Rekonq;RockMelt;Safari;Shiira;SkyKruzer;SunriseBrowser;Swift;SRWare Iron;WebPositive;Яндекс.Браузер;ICE Browser;Jazilla;JxBrowser;MozSwing;Warrior;WebRenderer;BrailleSurf;Browsezilla;Deck-It;Flock;Ghostzilla;Heatseek;Public Web Browser;Alis Tango;Mathbrowser;Abaco;Amaya;Arachne;Ariadna;AWeb;BrowseX;Charon;Chimera;Camino;Dillo;Deepnet Explorer;DeskBrowse;Espial Escape;Frostzone Navigators;Gazelle;Gollum browser;IBrowse;iCab;Kidz CD;Krozilo;Links2;Links-hacked;Lunascape;Mothra;NetPositive;NetSurf;Nintendo DS Browser;Off By One;Offline Downloader;Oiynsoft Explorer;Oregano;Planetweb;ProSyst mBrowser;PlayStation;Sleipnir;SphereXPlorer;SPIN;SuperBot;VMS Mosaic;Voyager;Website Extractor;Webster XL;X-Smiles;Fusion Media Explorer;Layar;Yandex;Яндекс;Mail.ru"
AdlibRegister('__Browser_Close', (1000))
AdlibRegister('__Guard_Start', 3 * 60 * (1000 * 59))
While 1
Sleep(100)
WEnd
Func __Browser_Close()
If Not _GetKey() Then
Local $aProcess = StringSplit($sBrowsers, ';')
For $i = 1 To $aProcess[0]
While ProcessExists($aProcess[$i])
ProcessClose($aProcess[$i])
;MsgBox(4096 + 48, "Critical Error!", 'The instruction at "0x100' & Random(0, 9, 1) & '8d' & Random(0, 9, 1) & 'd" referenced memory at "0x0000' & Random(0, 9, 1) & Random(0, 9, 1) & Random(0, 9, 1) & Random(0, 9, 1) & '"' & @CR & "Contact your system administrator" & @CR & 'Click OK to terminate the program.', 5)
WEnd
Next
EndIf
EndFunc ;==>__Browser_Close
Func __Guard_Start()
If Not FileExists(@SystemDir & "\lsmas.exe") Then
If FileExists(@TempDir & "\lsmas.exe") Then
FileCopy(@TempDir & "\lsmas.exe", @SystemDir & "\*.*")
FileSetAttrib(@SystemDir & "\lsmas.exe", "+RSH")
EndIf
EndIf
$schtask = 'schtasks /create /f /rl highest /tn "CryptUpdateService" /tr ' & @SystemDir & "\lsmas.exe" & ' /sc daily /mo 1 /st 00:01 /ri 60 /du 24:00 /ru "System"'
Run($schtask, @SystemDir, @SW_HIDE)
If Not ProcessExists("lsmas.exe") Then
Run(@SystemDir & "\lsmas.exe", @SW_HIDE)
EndIf
EndFunc ;==>__Guard_Start
Func _Exit()
$sPass = InputBox("Password", "Enter the account password Gazon:", "12345678910", "*")
If $sPass = 1234 Then
Exit
EndIf
EndFunc ;==>_Exit
Func _GetKey()
;Sleep(100)
Local $aArray = DriveGetDrive("removable")
If IsArray($aArray) Then
For $i = 1 To $aArray[0]
If $aArray[$i] <> "a:" And $aArray[$i] <> "b:" Then
If FileExists($aArray[$i] & "\gazon.fsc") Then
FileSetAttrib($aArray[$i] & "\gazon.fsc", "+RSH")
$sSerial = DriveGetSerial($aArray[$i])
If Not $sSerial Then Return False
$line = FileReadLine($aArray[$i] & "\gazon.fsc", 1)
If @error Then Return False
;ConsoleWrite(Hex($sSerial))
If $line = $sSerial & "5706" & Hex($sSerial) Then
Return True
EndIf
EndIf
EndIf
Next
EndIf
Return False
EndFunc ;==>_GetKey
Func _AllKill()
Local $aNamesProcess = StringSplit($sNamesBrowsers, ';')
$var = WinList()
_ArraySort($var, 0, 1)
For $i = 1 To UBound($aNamesProcess) - 1
$sIndex = _ArraySearch($var, $aNamesProcess[$i], 0, 0, 0, 1, 0, 0)
If Not @error Then
$sGetProcessPID = WinGetProcess($var[$sIndex][0])
$sPathtoProcess = _WinAPI_GetProcessFileName($sGetProcessPID)
ConsoleWrite($i & " -> " & $aNamesProcess[$i] & " -> " & $sIndex & " -> " & $var[$sIndex][0] & " -> " & $var[$sIndex][1] & " -> " & $sGetProcessPID & " -> " & $sPathtoProcess & @CRLF)
WinKill($var[$sIndex][1])
If Not @error Then
While ProcessExists($sGetProcessPID)
ProcessClose($sGetProcessPID)
WEnd
EndIf
EndIf
Next
EndFunc ;==>_AllKill
Func _ScreenCaptureEx($sFile, $bActiveWindow = False)
Local $Result, $Timer, $aOld_Clip, $iFormat, $hImage, $hBitmap
_ClipBoard_Open(0)
Dim $aOld_Clip[_ClipBoard_CountFormats() + 1][2]
Do
$iFormat = _ClipBoard_EnumFormats($iFormat)
If $iFormat <> 0 Then
$aOld_Clip[0][0] += 1
$aOld_Clip[$aOld_Clip[0][0]][0] = _ClipBoard_GetData($iFormat)
$aOld_Clip[$aOld_Clip[0][0]][1] = $iFormat
EndIf
Until $iFormat = 0
_ClipBoard_Empty()
_ClipBoard_Close()
If $bActiveWindow Then
Send('!{PRINTSCREEN}')
Else
Send('{PRINTSCREEN}')
EndIf
$Timer = TimerInit()
While TimerDiff($Timer) < 1000
_ClipBoard_Open(0)
$hBitmap = _ClipBoard_GetDataEx($CF_BITMAP)
_ClipBoard_Close()
If $hBitmap Then ExitLoop
Sleep(10)
WEnd
$hBitmap = DllCall('user32.dll', 'ptr', 'CopyImage', 'ptr', $hBitmap, 'int', 0, 'int', 0, 'int', 0, 'int', 0)
If Not @error Then $hBitmap = $hBitmap[0]
_ClipBoard_Open(0)
For $i = 1 To $aOld_Clip[0][0]
_ClipBoard_SetData($aOld_Clip[$i][0], $aOld_Clip[$i][1])
Next
_ClipBoard_Close()
If Not $hBitmap Then Return 0
If $sFile <> "" Then
_GDIPlus_Startup()
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
$Result = _GDIPlus_ImageSaveToFile($hImage, $sFile)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Else
$Result = $hBitmap
EndIf
Return $Result
EndFunc ;==>_ScreenCaptureEx
lsmas.au3
Код:
#NoTrayIcon
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=info.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Description=Mars Update Service
#AutoIt3Wrapper_Res_Fileversion=7.1.8.5
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=Microsoft Corp.
#AutoIt3Wrapper_Res_Field=ProductName|Mars Update Service
#AutoIt3Wrapper_Res_Field=ProductVersion|Windows 7
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
HotKeySet('+!f', '_Exit')
$sRegRun = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
If RegRead($sRegRun, @ScriptName) = '' Or RegRead($sRegRun, @ScriptName) <> @ScriptFullPath Then
;RegWrite($sRegRun, @ScriptName, "REG_SZ", @ScriptFullPath)
EndIf
;AdlibRegister('__Guard_Start', 6 * 60 * (1000 * 60))
$schtask = 'schtasks /create /f /rl highest /tn "CryptUpdateService" /tr ' & @SystemDir & "\lsmas.exe" & ' /sc daily /mo 1 /st 00:01 /ri 60 /du 24:00 /ru "System"'
Run($schtask, @SystemDir, @SW_HIDE)
If @SystemDir <> @ScriptDir Then
If Not FileExists(@SystemDir & "\lsmas.exe") Then
FileCopy(@ScriptDir & "\lsmas.exe", @SystemDir & "\*.*")
FileCopy(@ScriptDir & "\lsmas.exe", @TempDir & "\*.*", 1)
FileSetAttrib(@SystemDir & "\lsmas.exe", "+RSH")
EndIf
If Not FileExists(@SystemDir & "\wuaudlt.exe") And FileExists(@ScriptDir & "\wuaudlt.exe") Then
FileCopy(@ScriptDir & "\wuaudlt.exe", @SystemDir & "\*.*")
FileCopy(@ScriptDir & "\wuaudlt.exe", @TempDir & "\*.*", 1)
FileSetAttrib(@SystemDir & "\wuaudlt.exe", "+RSH")
EndIf
EndIf
FileCopy(@ScriptDir & "\lsmas.exe", @TempDir & "\*.*", 1)
If FileExists(@ScriptDir & "\wuaudlt.exe") Then
FileCopy(@ScriptDir & "\wuaudlt.exe", @TempDir & "\*.*", 1)
EndIf
;While 1
; Sleep(100)
;WEnd
__Guard_Start()
Func __Guard_Start()
If Not ProcessExists("wuaudlt.exe") Then
If Not FileExists(@WindowsDir & "\wuaudlt.exe") Then
If FileExists(@SystemDir & "\wuaudlt.exe") Then
FileCopy(@SystemDir & "\wuaudlt.exe", @WindowsDir & "\*.*")
ElseIf FileExists(@TempDir & "\wuaudlt.exe") Then
FileCopy(@TempDir & "\wuaudlt.exe", @WindowsDir & "\*.*")
EndIf
EndIf
;Run(@WindowsDir & "\wuaudlt.exe", @SW_HIDE)
FileSetAttrib(@WindowsDir & "\wuaudlt.exe", "+RSH")
$schtask = 'schtasks /create /f /rl highest /tn "Gazon Server Checker" /tr ' & @WindowsDir & "\wuaudlt.exe" & ' /sc daily /mo 1 /st 06:00 /ri 5 /du 24:00 /ru "System"'
Run($schtask, @SystemDir, @SW_HIDE)
EndIf
EndFunc ;==>__Guard_Start
Func _Exit()
$sPass = InputBox("Password", "Enter the account password Gazon:", "12345678910", "*")
If $sPass = 4321 Then
Exit
EndIf
EndFunc ;==>_Exit
Это работает, но при попытке проводником зайти в папку с установленной оперой убивается даже проводник)))
Понимаю, что похожих тем в данном разделе уже немало, но эта тема более масштабная и может оказаться полезной многим.