Список сетевых ресурсов и сопоставление SID
Фон:
Я пытаюсь удалить вариант руткита с именем MEBRoot и обнаружил, что вредоносная программа создала своего рода сеть, связывающую определенные файлы / папки с моим ПК, из других мест на моем ПК и, возможно, с удаленным компьютером (не уверен на этот). Это лучший способ, которым я могу описать это из того, что я видел, так как я не до конца понимаю, что именно было сделано, поэтому, пожалуйста, прости мою интерпретацию. Кроме того, я обнаружил чрезвычайное использование 8dot3names, соединений, символических и жестких ссылок в дополнение к сетевым ресурсам.
Вопросы:
Есть ли способ визуально показать те скрытые сетевые ресурсы, где можно увидеть полный список структуры файловой системы в удобочитаемой форме, без предварительного знания имен общих ресурсов? Ничего не появляется под сетевой папкой в дереве проводника, и я не знаю имен общих / общих файлов / папок. Я также включил содержимое файла, который может пролить дополнительный свет. Имя файла было названо etwproviderinstall.vbs для тех, кто заинтересован.
Из общих ресурсов и связанных файлов / папок, которые я нашел, у некоторых из них есть ACL, установленные SID, и между SID и именами не производится сопоставление. Есть ли способ быстро установить эти соединения, чтобы я мог контролировать эти файлы / папки?
Вариант ЯвныйГлобалы ' Dim ObjShell, ObjFS
Dim manual, targetDir
Set ObjShell = CreateObject ("WScript.Shell") Set ObjFS = CreateObject ("Scripting.FileSystemObject")
' Регулярные выражения ' Dim RegExFolderPart, RegExExtensionPart, RegExIsManifest
Set RegExFolderPart = Новый RegExp RegExFolderPart.Pattern = "^.*\" RegExFolderPart.Global = True RegExFolderPart.IgnoreCase = True RegExFolderPart.MultiLine = False
Установить RegExExtensionPart = Новый RegExp RegExExtensionPart.Pattern = ". [^. \] + $" RegExExtensionPart.Global = True RegExExtensionPart.IgnoreCase = True RegExExtensionPart.MultiLine = False
Set RegExIsManifest = Новый RegExp RegExIsManifest.Pattern = ".+. Man$" RegExIsManifest.Global = True RegExIsManifest.IgnoreCase = True RegExIsManifest.MultiLine = False
"Нет удобного способа проверить, определен ли WScript. "Этот код фиксирует возможную неопределенную ошибку при выполнении проверки. ' При ошибке возобновить следующее руководство = не WScript это ничего Если Err.Number = 0, то ручной = True еще ручной = ложный End If При ошибке Перейти к 0
'' '' '' '' '' '' '' '' '' '' '' Ручное выполнение '' '' '' '' '' '' '' '' '' '' '' Если True = ручной, то
Dim ObjCommandLine Dim result Set ObjCommandLine = WScript.Arguments ' Check parameters ' If( 2 <> ObjCommandLine.Count ) Then PrintUsage() WScript.Quit(1) End If targetDir = objFS.GetAbsolutePathName(ObjCommandLine(1)) ' Perform operation ' If "install" = ObjCommandLine(0) Then result = ForEachManifest( GetRef("InstallProvider") ) ElseIf "uninstall" = ObjCommandLine(0) Then result = ForEachManifest( GetRef("UninstallProvider") ) Else PrintUsage() result = 1 End If WScript.Quit(result)End If
'' '' '' '' '' '' '' '' '' '' '' Подпрограммы '' '' '' '' '' '' '' '' '' '' ''
Синтаксис использования печати ' Функция PrintUsage() "00000000000000000000000000000000000000000000000000000000000000000000000000000080 WScript.Echo( "ETWProviderInstall.vbs устанавливает и удаляет установщик Microsoft Windows ETW" + VbCR + VbLF + _ "Манифесты провайдера, необходимые для декодирования файлов setup.etl на компьютерах, работающих под управлением" + VbCR + VbLF + _ "Microsoft Windows Vista и Microsoft Windows Server 2008". + VbCR + VbLF + _ "" + VbCR + VbLF + _ "Использование: ETWProviderInstall.vbs { install | uninstall } " + VbCR + VbLF + _ "установить - установить провайдеров" + VbCR + VbLF + _ "удалить - удалить провайдеров" + VbCR + VbLF + _ "Каталог провайдера - относительный или абсолютный путь к каталогу, содержащему" + VbCR + VbLF + _ "провайдер манифестов и ресурсов". + VbCR + VbLF + _ "") Конечная функция
Установить провайдеров ' Функция InstallProviders targetDir = Session.TargetPath("ETWProviders") ForEachManifest( GetRef("InstallProvider")) Конечная функция
Удалить провайдеров ' Функция Uninstall Providers
' If this is msi mode, uninstall failures are not fatal ' If False = manual Then On Error Resume Next End If targetDir = Session.TargetPath("ETWProviders") ForEachManifest( GetRef("UninstallProvider") ) On Error Goto 0Конечная функция
'Перечисляет по манифестам провайдера' Функция ForEachManifest (executeAction) Dim ObjCD, ObjFiles, File
' Remove possible trailing backslash ' If Right(targetDir, 1) = "\" Then targetDir = Left(targetDir, Len(targetDir) - 1) End If Set ObjCD = ObjFs.GetFolder( targetDir ) Set ObjFiles = ObjCD.Files For Each File In ObjFiles If RegExIsManifest.Test( File.name ) Then ForEachManifest = performAction( File.path ) If ForEachManifest <> 0 AND manual Then WScript.Echo(" Failed on " & File.name & " with error code " & ForEachManifest) Exit For End If End If NextКонечная функция
Функция "Установить провайдера ETW" InstallProvider( manifestName) Dim fixedManifest
fixedManifest = FixManifest( manifestName ) If Not fixedManifest = "" Then InstallProvider = ObjShell.Run( "wevtutil im """ & fixedManifest & """", 0, True ) ObjFS.DeleteFile( fixedManifest ) Else InstallProvider = 1 End IfКонечная функция
Функция "Удалить провайдера ETW" UninstallProvider (manifestName) UninstallProvider = ObjShell.Run ("wevtutil um" "" & manifestName & "" "", 0, True) End Function
'Создать исправленную копию манифеста провайдера' Функция FixManifest( manifestName) Dim ObjDom, ObjNodes, ObjNode, ObjAttributes Dim fixedName, messageFileName, resourceFileName
Set ObjDom = CreateObject("msxml2.DOMDocument.3.0") ObjDom.async = false ObjDom.resolveExternals = false ObjDom.validateOnParse = false If Not ObjDom.load( manifestName ) Then FixManifest = "" Exit Function End If Set ObjNodes = ObjDom.SelectNodes("//*/provider") If ObjNodes Is Nothing Then FixManifest = "" Exit Function End If For Each ObjNode In ObjNodes Set ObjAttributes = ObjNode.attributes messageFileName = ObjAttributes.getNamedItem("messageFileName").nodeValue resourceFileName = ObjAttributes.getNamedItem("resourceFileName").nodeValue messageFileName = RegExFolderPart.Replace ( messageFileName, targetDir + "\" ) resourceFileName = RegExFolderPart.Replace ( resourceFileName, targetDir + "\" ) ' If the resource DLLs referenced in the provider manifest are main OS DLLs ' then we don't include them in the OPK, instead we include a resource-only ' dll with the etw.dll suffix. For these DLLs we need to add the suffix here. ' If 0 = InStr( messageFileName, "etw.dll" ) Then messageFileName = RegExExtensionPart.Replace ( messageFileName, "etw.dll" ) End If If 0 = InStr( resourceFileName, "etw.dll" ) Then resourceFileName = RegExExtensionPart.Replace ( resourceFileName, "etw.dll" ) End If ObjNode.SetAttribute "messageFileName", messageFileName ObjNode.SetAttribute "resourceFileName", resourceFileName Next fixedName = RegExFolderPart.Replace ( manifestName, ObjShell.ExpandEnvironmentStrings("%TEMP%") + "\" ) + ".fixed.man" If ObjDom.save( fixedName ) Then FixManifest = "" Exit Function End If FixManifest = fixedName
Конечная функция