Список сетевых ресурсов и сопоставление SID

Фон:

Я пытаюсь удалить вариант руткита с именем MEBRoot и обнаружил, что вредоносная программа создала своего рода сеть, связывающую определенные файлы / папки с моим ПК, из других мест на моем ПК и, возможно, с удаленным компьютером (не уверен на этот). Это лучший способ, которым я могу описать это из того, что я видел, так как я не до конца понимаю, что именно было сделано, поэтому, пожалуйста, прости мою интерпретацию. Кроме того, я обнаружил чрезвычайное использование 8dot3names, соединений, символических и жестких ссылок в дополнение к сетевым ресурсам.

Вопросы:

  1. Есть ли способ визуально показать те скрытые сетевые ресурсы, где можно увидеть полный список структуры файловой системы в удобочитаемой форме, без предварительного знания имен общих ресурсов? Ничего не появляется под сетевой папкой в ​​дереве проводника, и я не знаю имен общих / общих файлов / папок. Я также включил содержимое файла, который может пролить дополнительный свет. Имя файла было названо etwproviderinstall.vbs для тех, кто заинтересован.

  2. Из общих ресурсов и связанных файлов / папок, которые я нашел, у некоторых из них есть 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

Конечная функция

0 ответов

Другие вопросы по тегам