首页 黑客接单正文

恶意程序分析利器PowerShellArsenal

简介

PowerShellArsenal是一个PowerShell其功能是帮助逆向工程师分析模块.NET恶意软件,PowerShellArsenal它的功能非常强大,可以反汇编.NET恶意软件、分析和捕获内存、分析文件格式和内存结构、获取内部系统信息等。

1.Disassembly

反汇编代码

(1)Get-CSDisassembly

使用Capstone Engine反汇编引擎反汇编代码代码

使用 *** :

  • Get-CSDisassembly-Architecture{Arm|Arm64|Mips|X86|PPC|CS_ARCH_ALL}-Mode{LittleEndian|Arm|Mode16|
  • Mode32|Mode64|Thumb|Micro|N64|BigEndian}-Code<Byte[]>[-Offset<UInt64>][-Count<UInt32>][-Syntax<S
  • tring>][-DetailOn][<CommonParameters>]
  • (2)Get-ILDisassembly

    MSIL(Microsoft Intermediate Language (MSIL)反汇编器。

    使用 *** :

  • Get-ILDisassembly-AssemblyPath<String>-MetadataToken<Int32>[<CommonParameters>]
  • Get-ILDisassembly-MethodInfo<MethodBase>[<CommonParameters>]
  • Get-ILDisassembly-MethodDef<MethodDef>[<CommonParameters>]
  • 2.MalwareAnalysis

    分析恶意软件时需要用到的工具。

    (1)New-FunctionDelegate

    提供了一个X86或x86_64可执行包装的功能。

    使用 *** :

  • New-FunctionDelegate[[-Parameters]<Type[]>][[-ReturnType]<Type>][-FunctionBytes]<Byte[]>[[-CallingConvention
  • ]{Winapi|Cdecl|StdCall|ThisCall|FastCall}][-DebugBreak][<CommonParameters>]
  • (2)Invoke-LoadLibrary

    主要调用kernel32!LoadLibrary将用于恶意软件分析DLL加载到当前PowerShell进程中。

    使用 *** :

  • Invoke-LoadLibrary[-FileName]<String>[<CommonParameters>]
  • (3)New-DllExportFunction

    New-DllExportFunction接受模块,然后导出procedure name,返回类型、参数类型。***非托管函数可用于创建托管委托。

    使用 *** :

  • New-DllExportFunction[-Module]<ProcessModule>[-ProcedureName]<String>[[-Parameters]<Type[]>][[-ReturnType]<
  • Type>][<CommonParameters>]
  • (4)Get-HostsFile

    解析HOSTS文件

    使用 *** :

  • Get-HostsFile[[-Path]<String>][-Show][<CommonParameters>]
  • (5)New-HostsFileEntry

    替换或添加内容HOSTS文件

    使用 *** :

  • New-HostsFileEntry[-IPAddress]<IPAddress>[-Hostname]<String>[[-Comment]<String>][-Path<String>][-PassThru]
  • [-Show][<CommonParameters>]
  • (6)Remove-HostsFileEntry

    从HOSTS删除文件中的内容

    使用 *** :

  • Remove-HostsFileEntry-IPAddress<IPAddress>[-Path<String>][-PassThru][-Show][<CommonParameters>]
  • Remove-HostsFileEntry-Hostname<String>[-Path<String>][-PassThru][-Show][<CommonParameters>]
  • Remove-HostsFileEntry[-Path<String>][-PassThru][-Show][-HostsEntry<PSObject[]>][<CommonParameters>]
  • (7)Get-AssemblyStrings

    输出.NET所有可执行文件定义的字符串

    使用 *** :

  • Get-AssemblyStrings-AssemblyPath<String>[-HeapType<String>][-Raw][<CommonParameters>]
  • Get-AssemblyStrings-AssemblyBytes<Byte[]>[-HeapType<String>][-Raw][<CommonParameters>]
  • Get-AssemblyStrings-AssemblyInfo<Assembly>[-HeapType<String>][-Raw][<CommonParameters>]
  • (8)Get-AssemblyResources

    在程序中提取资源

  • Get-AssemblyResources-AssemblyPath<String>[<CommonParameters>]
  • Get-AssemblyResources-AssemblyBytes<Byte[]>[<CommonParameters>]
  • Get-AssemblyResources-AssemblyInfo<Assembly>[<CommonParameters>]
  • (9)Remove-AssemblySuppressIlda *** Attribute

    从.NET集中删除程序SuppressIlda *** Attribute属性。

    使用 *** :

  • Remove-AssemblySuppressIlda *** Attribute-AssemblyPath<String>-FilePath<String>[<CommonParameters>]
  • Remove-AssemblySuppressIlda *** Attribute-AssemblyBytes<Byte[]>-FilePath<String>[<CommonParameters>]
  • Remove-AssemblySuppressIlda *** Attribute-AssemblyInfo<Assembly>-FilePath<String>[<CommonParameters>]
  • (10)Get-AssemblyImplementedMethods

    所有返回程序的 *** 。

    使用 *** :

  • Get-AssemblyImplementedMethods-AssemblyPath<String>[<CommonParameters>]
  • Get-AssemblyImplementedMethods-AssemblyBytes<Byte[]>[<CommonParameters>]
  • Get-AssemblyImplementedMethods-AssemblyInfo<Assembly>[<CommonParameters>]
  • 3.MemoryTools

    检查和分析过程中的内存

    (1)Get-ProcessStrings

    在用户模式内存中输出一个过程,因此可以打印字符串

    使用 *** :

  • Get-ProcessStrings[-ProcessID]<Int32>[-MinimumLength<UInt16>][-Encoding<String>][-IncludeImages][<CommonPar
  • ameters>]
  • (2)Get-VirtualMemoryInfo

    调用的kernel32!VirtualQueryEx

    使用 *** :

  • Get-VirtualMemoryInfo[-ProcessID]<Int32>[-ModuleBaseAddress]<IntPtr>[-PageSize<Int32>][<CommonParameters>]
  • (3)Get-ProcessMemoryInfo

    类似于!vadump WinDbg命令

    使用 *** :

  • Get-ProcessMemoryInfo[-ProcessID]<Int32>[<CommonParameters>]
  • (4)Get-StructFromMemory

    将数据从任何过程中的非托管内存块调度到指定类型的新分配托管对象。

  • Get-StructFromMemory[-Id]<UInt16>[-MemoryAddress]<IntPtr>[-StructType]<Type>[<CommonParameters>]
  • 4.Parsers

    分析文件格式和内存结构

    (1)Get-PE

    分析磁盘上的内存和文件PE头

    使用 *** :

  • Get-PE[-ProcessID]<Int32>[[-ModuleBaseAddress]<IntPtr>][[-Module]<ProcessModule[]>][-DumpDirectory<String>]
  • [-IgnoreMalformedPE][<CommonParameters>]
  • Get-PE[-FileBytes]<Byte[]>[-IgnoreMalformedPE][<CommonParameters>]
  • (2)Find-ProcessPEs

    无论是否以合法的方式加载,在内存中找到可移植的可执行文件

    使用 *** :

  • Find-ProcessPEs[-ProcessID]<Int32>[<CommonParameters>]
  • (3)Get-LibSymbols

    显示来自Windows LIB符号信息的文件。

    使用 *** :

  • Get-LibSymbols[-Path]<String[]>[<CommonParameters>]
  • (4)Get-ObjDump

    显示有关Windows对象(OBJ)文件信息。

    使用 *** :

  • Get-ObjDump[-Path]<String[]>[<CommonParameters>]
  • 5.WindowsInternals

    获取和分析低级别的Windows操作系统的信息。

    (1)Get-NtSystemInformation

    调用实用程序ntdll!NtQuerySystemInformation函数,可用于查询通常对用户不可见的内部操作系统信息。

    使用 *** :

  • Get-NtSystemInformation[-PoolTagInformation][<CommonParameters>]
  • Get-NtSystemInformation[-ModuleInformation][<CommonParameters>]
  • Get-NtSystemInformation[-HandleInformation][-ObjectType<String>][<CommonParameters>]
  • Get-NtSystemInformation[-ObjectInformation][<CommonParameters>]
  • Get-NtSystemInformation[-LockInformation][<CommonParameters>]
  • Get-NtSystemInformation[-CodeIntegrityInformation][<CommonParameters>]
  • Get-NtSystemInformation[-GlobalFlags][<CommonParameters>]
  • (2)Get-PEB

    返回一个过程环境块(PEB)。

    使用 *** :

  • Get-PEB[-Id]<UInt16[]>[<CommonParameters>]
  • (3)Register-ProcessModuleTrace

    模块跟踪加载过程

    使用 *** :

  • Register-ProcessModuleTrace[<CommonParameters>]
  • (4)Get-ProcessModuleTrace

    显示已加载自调用Register-ProcessModuleTrace流程模块

    使用 *** :

  • Get-ProcessModuleTrace[<CommonParameters>]
  • (5)Unregister-ProcessModuleTrace

    停止跟踪正在运行的过程模块

    使用 *** :

  • Unregister-ProcessModuleTrace[<CommonParameters>]
  • (6)Get-SystemInfo

    调用kernel32!GetSystemInfo获取系统的一些信息。

    使用 *** :

  • Get-SystemInfo[<CommonParameters>]
  • 6.Misc

    其它辅助功能

    (1)Get-Member

    用于扩展内置Get-Member cmdlet的 *** 函数

    使用 *** :

  • Get-Member[-InputObject<PSObject>][[-Name]<String[]>][-MemberType{AliasProperty|CodeProperty|Property|
  • NoteProperty|ScriptProperty|Properties|PropertySet|Method|CodeMethod|ScriptMethod|Methods|Parameter
  • izedProperty|MemberSet|Event|Dynamic|All}][-View{Extended|Adapted|Base|All}][-Static][-Force][<C
  • ommonParameters>]
  • Get-Member[-InputObject<PSObject>][[-Name]<String[]>][-PrivateMemberType{Constructor|Event|Field|Metho
  • d|Property|TypeInfo|Custom|NestedType|All}][-Static][-Force][-Private][<CommonParameters>]
  • (2)Get-Strings

    Get-Strings cmdlet从文件返回字符串(Unicode和/或Ascii)。此cmdlet对转储字符串非常有用。

    使用 *** :

  • Get-Strings[-Path]<String[]>[-Encoding<String>][-MinimumLength<UInt32>][<CommonParameters>]
  • (3)ConvertTo-String

    ConvertTo-String实施二进制正则表达式非常有用。

    使用 *** :

  • ConvertTo-String[-Path]<String>[<CommonParameters>]
  • (4)Get-Entropy

    计算文件或字节数组的熵。

    使用 *** :

  • Get-Entropy[-ByteArray]<Byte[]>[<CommonParameters>]
  • Get-Entropy[-FilePath]<FileInfo>[<CommonParameters>]
  • 项目地址:https://github.com/mattifestation/PowerShellArsenal

       
    版权声明

    本文仅代表作者观点,不代表本站立场。
    本文系作者授权发表,未经许可,不得转载。