Список сетевых ресурсов и сопоставление 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
Конечная функция