横向移动检测之远程执行(一)PsExec

横向移动检测之远程执行—PsExec

  • 1.1 介绍
  • 1.2 PsExec - 源
    • 1.2.1 事件日志
    • 1.2.2 注册表
    • 1.2.3 文件系统
  • 1.3 PsExec - 目的
    • 1.3.1 事件日志
    • 1.3.2 注册表
    • 1.3.3 文件系统

1.1 介绍

 在横向移动过程,攻击者通常会使用PsExec在远程主机执行命令。在客户端执行psexec.exe后,如果服务器认证成功,会将psexesvc.exe上传到服务端的ADMIN$目录并作为服务运行,在执行完命令后删除对应的服务和psexesvc.exe。
 通过对客户端和服务端的事件日志、注册表、文件系统进行分析,可以从客户端主机获得连接的目的主机,连接时间等信息;从服务端主机可以获得连接的客户端信息,连接时间等信息。

环境

  • 源:192.168.49.155
  • 目的:192.168.49.144
    psexec.exe基本命令格式如下:
    psexec.exe \\host -accepteula -d -c c:\temp\evil.exe
    -accepteula 不显示license对话框
    -d 不等待进程终止(非交互式)
    -c 复制执定程序到远程系统执行,如果省略,应用必须在远程系统的系统路径。
    如果在执行命令时提示拒绝访问:
    在这里插入图片描述
    须在目标主机执行如下命令:
    reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

在192.168.49.144上远程执行evil.exe:
PsExec.exe \\192.168.49.144 -u victim -p -d -c .\evil.exe
横向移动检测之远程执行(一)PsExec_第1张图片
在目标主机查看,evil.exe已运行:
横向移动检测之远程执行(一)PsExec_第2张图片

1.2 PsExec - 源

1.2.1 事件日志

  • security.evtx
    - 4648,试图使用显式凭据登录。记录当前登录的用户名,使用的凭据的用户名,目标主机名/IP,进程名。
     4648日志内容如下,在下图中,当前登录的用户为attacker,使用的凭据为victim,目标服务器名称为victim-pc,时间为2019-09-08 23:18:02:
    横向移动检测之远程执行(一)PsExec_第3张图片
     首先使用kape.exe对日志文件进行提取:
    kape.exe --tsource C: --target EventLogs --tdest .\event
    使用logparser对security.evtx进行分析:
    logparser -stats:OFF -i:EVT "SELECT timegenerated as date, extract_token(strings, 1, '|') as accountname, extract_token(strings, 2, '|') as domain, extract_token(strings, 5, '|') as usedaccount, extract_token(strings, 6, '|') as useddomain, extract_token(strings, 8, '|') as targetserver, extract_token(strings, 9, '|') as extradata, extract_token(strings, 11, '|') as procname, extract_token(strings, 12, '|') as sourceip from 'Security.evtx' WHERE EventID = 4648 ORDER BY TimeGenerated DESC"
    横向移动检测之远程执行(一)PsExec_第4张图片

1.2.2 注册表

 可用工具kape.exe对live系统注册表相关的数据进行提取,命令如下:
kape.exe --tsource C: --target RegistryHives --tdest .\registry

  • NTUSER.DAT
    - PxExec在运行时,须接受用户协议,记录在注册表Software\SysInternals\PsExec\EulaAccepted(Eula,最终用户许可协议,End user License Agreement)。
     用Registry Explorer对NTUSER.DAT文件进行分析,查看上述注册表记录,通过Last write timestamp的值,可以确认程序的首次运行时间为2019-09-08 22:16:33(注意时间加8小时):
    横向移动检测之远程执行(一)PsExec_第5张图片
  • ShimCache
     ShimCache信息记录在注册表文件SYSTEM中,位置为SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache,会记录程序的修改时间,此外通过Last write timestamp,在一定程度上可以确定程序的最迟运行时间(不迟于last write timestamp)。
     可用Registry Explorer对SYSTEM文件进行分析(测试过程未记录到psexec.exe的执行记录):
    横向移动检测之远程执行(一)PsExec_第6张图片
  • AmCache.hve
     AmCache.hve位于C:\Windows\Appcompat\Programs\Amcache.hve,记录程序的首次执行时间。可用工具RegRipper进行分析,如下(注意时间加8):
    横向移动检测之远程执行(一)PsExec_第7张图片

1.2.3 文件系统

  • Prefetch
     Windows Prefetch文件位于C:\Windows\Prefetch\目录,会记录程序的执行次数,首次执行时间,最后执行时间等信息。
     用WinPrefetchView对psexec.exe-{hash}.pf进行分析:
    横向移动检测之远程执行(一)PsExec_第8张图片
  • 文件创建
     由于psexec.exe不是Windows的原生应用,因此会将文件下载到目标主机本地进行运行,并被文件系统记录。
     可对$MFT进行分析,获得文件的创建时间等信息。首先用kape.exe对文件系统相关的数据:
    kape.exe --tsource c: --target FileSystem --tdest .\FileSystem
    然后用analyzeMFT.py对$MFT文件进行分析:
    analyzeMFT.py -f $MFT -o win7_mft_analyze.csv -e --bodyfull -p --localtz
    结果如下:
    在这里插入图片描述

1.3 PsExec - 目的

1.3.1 事件日志

对事件日志相关的数据进行提取:
kape.exe --tsource c: --target EventLogs --tdest .\EventLogs

  • security.evtx
    - 4624,登录类型为3,如果使用-u指定登录凭证,则登录类型为2,记录源IP/登录用户名等信息。
    在使用psexec.exe远程执行时,会在服务端产生3条日志,分别为登录上传psexesvc.exe、安装服务、删除服务:
    横向移动检测之远程执行(一)PsExec_第9张图片
    用logparser对日志文件进行分析:
    LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 8, '|') as LogonType,EXTRACT_TOKEN(strings, 9, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 11, '|') AS Workstation, EXTRACT_TOKEN(Strings, 17, '|') AS ProcessName, EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM 'Security.evtx' WHERE EventID = 4624 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY') AND LogonType= '3' OR LogonType='2' ORDER BY TimeGenerated DESC"
    横向移动检测之远程执行(一)PsExec_第10张图片
    - 4672,为新登录分配了特殊权限,记录登录的用户名,一般在访问默认共享如C$或ADMIN$。会产生2条记录,执行前访问文件psexesvc.exe创建服务,执行后删除服务并删除psexesvc.exe:
    横向移动检测之远程执行(一)PsExec_第11张图片
    用logparser对日志文件进行分析:
    Logparser.exe -stats:OFF -i:EVT "Select TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 1, '|') AS Username, EXTRACT_TOKEN(Strings, 2, '|') AS Domain FROM 'Security.evtx' WHERE EventID = 4672 AND Domain NOT IN ('NT AUTHORITY')"
    横向移动检测之远程执行(一)PsExec_第12张图片
    - 5140,网络共享对象被访问,PsExec使用ADMIN$共享。2条记录,可以确认源IP和使用的账号。
    5140日志内容如下:
    横向移动检测之远程执行(一)PsExec_第13张图片
    用logparser对日志文件进行分析:
    LogParser -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 1, '|') AS AccountName, EXTRACT_TOKEN(Strings, 2, '|') AS AccountDomain, EXTRACT_TOKEN(Strings, 5, '|') AS SourceIP, EXTRACT_TOKEN(Strings, 7, '|') AS ShareName, EXTRACT_TOKEN(Strings, 8, '|') AS SharePath FROM 'Security.evtx' WHERE EventID = '5140' AND AccountDomain NOT IN ('NT AUTHORITY') ORDER BY TimeGenerated DESC"
    横向移动检测之远程执行(一)PsExec_第14张图片
  • system.evtx
    - 7045,服务安装,记录服务名称,可执行文件路径,服务类型,启动类型,服务账户。7045日志内容如下:
    横向移动检测之远程执行(一)PsExec_第15张图片
    用logparser对日志文件进行分析:
    logparser -stats:OFF -i:EVT "Select TimeGenerated AS Date, extract_token(strings, 0, '|') AS ServiceName, extract_token(strings, 1, '|') AS ServicePath, extract_token(strings, 4, '|') AS ServiceUser FROM System.evtx WHERE EventID = 7045 ORDER BY TimeGenerated DESC"
    横向移动检测之远程执行(一)PsExec_第16张图片

1.3.2 注册表

  • SYSTEM\CurrentControlSet\Services\PSEXESVC
    - 新创建的服务配置保存于该注册表键,但攻击者可能会使用-r选项重命名服务。一般运行完后会删除PSEXESVC服务,所以找不到该键。下图中,是将服务名称修改为test后产生的记录:
    横向移动检测之远程执行(一)PsExec_第17张图片
  • ShimCache
     ShimCache信息记录在注册表文件SYSTEM中,位置为SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache,会记录程序的修改时间,此外通过Last write timestamp,在一定程度上可以确定程序的最迟运行时间(不迟于last write timestamp)。
     可用Registry Explorer对SYSTEM文件进行分析(测试过程未记录到psexec.exe的执行记录):
    横向移动检测之远程执行(一)PsExec_第18张图片

1.3.3 文件系统

  • Prefetch
     Windows Prefetch文件位于C:\Windows\prefetch\目录,通过对.pf文件的分析,可以获得程序的执行次数,首次执行时间,最后执行时间等信息。
    用WinPrefetchView对 psexesvc.exe-{hash}.pf 进行分析:
    横向移动检测之远程执行(一)PsExec_第19张图片
    evil.exe-{hash}.pf进行分析:
    横向移动检测之远程执行(一)PsExec_第20张图片
  • 文件创建
    psexesvc.exe默认位于ADMIN$(Windows目录),以及其他PsExec上传的可执行文件(evil.exe)。
    使用kape.exe对文件系统相关的数据进行收集:
    kape.exe --tsource c: --target FileSystem --tdest .\FileSystem
    使用analyzeMFT.py分析$MFT:
    analyzeMFT.py -f \$MFT -o win7_mft_analyze.csv -e bodyfull -p --localtz
    整理后的结果如下:
    在这里插入图片描述

^_^ 感谢阅读 ^_^

你可能感兴趣的:(Threat,Hunting,应急响应,横向移动检测,攻击溯源)