The result of tag: (9 results)

CVE-2019-0708:Windows RDP远程代码执行漏洞检测与防御

by LauCyun May 15 23:09:33 8,157 views

昨晚,微软紧急发布修复布丁,修复RDP服务漏洞。据称此漏洞堪比Wannacry。

远程桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电脑(服务器端或称“远程电脑”)。大部分的Windows都有客户端所需软件。

还记得当年被Wannacry支配的恐惧吗?电脑被加密,文件被加密,医院、公司、政府机构的电脑通通中招,整个世界都被Wannacry席卷。


图1 Wannacry勒索病毒

据统计,在全球范围内对互联网开放RDP服务的资产数量多达16,192,667台,其中归属中国大陆地区的受影响资产数量为7,932,549台。具体数据如下图:


图2 RDP服务资产统计

0x0 漏洞描述

当未经身份验证的攻击者使用RDP连接到目标系统并发送经特殊设计的请求时,远程桌面服务(以前称为“终端服务”)中存在远程执行代码漏洞。此漏洞是预身份验证,无需用户交互。成功利用此漏洞的攻击者可以在目标系统上执行任意代码。攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。

若要利用此漏洞,攻击者需要通过RDP向目标系统远程桌面服务发送经特殊设计的请求。

微软官方公告:https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0708

0x1 影响范围

受影响该漏洞的操作系统有:

  • Windows XP
  • Windows Server 2003
  • Windows 7
  • Windows Server 2008 R2
  • Windows Server 2008

Windows 8和Windows 10及之后版本的用户不受此漏洞影响。

0x2 检测

介绍一下检测环境,环境如下:

  • 靶机1: 
    • 系统:Windows XP SP3 x86
    • IP:192.168.0.185
  • 靶机2:
    • 系统:Windows 7 x64
    • IP:192.168.0.185
  • 攻击机:
    • 系统:Kali Linux
    • IP:192.168.0.5

推荐使用@zerosum0x0大神的poc,原理详见:https://securingtomorrow.mcafee.com/other-blogs/mcafee-labs/rdp-stands-for-really-do-patch-understanding-the-wormable-rdp-vulnerability-cve-2019-0708/

首先,执行以下命令安装依赖库:

apt-get install -y make gcc g++ autoconf libssl-dev pkg-config git

接着,执行以下命令进行编译:

git clone https://github.com/zerosum0x0/CVE-2019-0708.git
cd CVE-2019-0708/rdesktop-fork-bd6aa6acddf0ba640a49834807872f4cc0d0a773/
./bootstrap
./configure --disable-credssp --disable-smartcard
make

OK,在当前目录产生rdesktop文件,执行它即可检测。


图3 检测结果

如图3所示,第三次是已经安装了补丁的情况下检测。

0x3 修复建议

1、及时安装更新

目前,微软已经发布针对该漏洞的补丁,请使用上述受影响的操作系统用户及时更新,受影响操作系统对应的补丁编号如下表:

操作系统版本 补丁编号
Windows 7 x86 KB4499175
Windows 7 x64 KB4499175
Windows Embedded Standard 7 for x86 KB4499175
Windows Embedded Standard 7 for x64 KB4499175
Windows Server 2008 Itanium KB4499180
Windows Server 2008 x86 KB4499180
Windows Server 2008 x64 KB4499180
Windows Server 2008 R2 Itanium KB4499175
Windows Server 2008 R2 x64 KB4499175
Windows Server 2003 KB4500331
Windows Server 2003 x64 KB4500331
Windows XP SP2 for x64 KB4500331
Windows XP SP3 for XPe KB4500331
Windows XP SP3 KB4500331
WES09 and POSReady 2009 for x86 KB4500331

2、临时解决建议

若暂不方便安装补丁更新,可采取下列临时防护措施,对此漏洞进行防护。

  • 禁用远程桌面服务;
  • 在防火墙中对远程桌面服务端口(3389)进行阻断;
  • 在Windows 7、Windows Server 2008、Windows Server 2008 R2 上启用网络身份认证。

0x4 防御

如果您有IPS、IDS或防火墙相关产品,可以使用如下规则进行阻断或检测:

# Look for the potential signs of CVE-2019-0708, pre encryption.
#
# Note this rule is specific to port 3389, but could be expanded
# using flowbits to other ports if an earlier packet is used for
# protocol detection, or potentially a string detection on 'Duca'
# (see https://wiki.wireshark.org/RDP).
#
# Sensible values for distances between objects have been chosen.
# An exploit could potentially change the reserved byte (second 
# in the packet) or pad the TPKT structure with junk to avoid the
# 'within' optimisations.
#
# 03 00                - TPKT header: version 3, reserved byte 0
#                        Must be at the beginning of the packet
# 02 f0                - X.224 COTP: length 2, PDU type 0x0f (DT_DATA)
# 00 05 00 14 7c 00 01 - T.124 Connect data, Generic Conference Control (ID 0.0.20.124.0.1)
#                        PDU size ranges from 230-400 bytes, 256 skipped in the rule
# 03 c0                - RDP Client Network Data
#                        Skip the header length and channel count (6 bytes)
# MS_T120 (C string)   - Name of patched control channel
#                        Must be within 372 bytes (31 channels * 12 bytes per channel)
alert tcp any any -> any 3389 (msg:"NCC GROUP RDP connection setup with MS_T120 channel, potential CVE-2019-0708"; flow:to_server,established; content:"|03 00|"; offset:0; depth:2; content:"|02 f0|"; distance:2; within:2; content:"|00 05 00 14 7c 00 01|"; within:512; content:"|03 c0|"; distance:3; within:384; content:"MS_T120|00|"; distance:6; within:372; threshold: type limit, track by_src, count 2, seconds 600; classtype:bad-unknown; reference:url,portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0708; sid:190708; rev:1;)

0x5 参考

...

Tags Read More


一种解密混淆PowerShell脚本的方法

by LauCyun May 14 11:06:30 5,539 views

最近在病毒样本分析时,遇到了不少使用PowerShell脚本的病毒程序,这些脚本基本都是经过混淆处理过的,给分析过程带来了一些麻烦。

PowerShell是运行在Windows操作系统上实现对系统以及应用程序进行管理自动化的命令行脚本环境,PowerShell需要.NET环境的支持,借助.NET Framework平台强大的类库,几乎让一切都成为可能。微软起“PowerShell”这个名字并不是夸夸其谈,它完全支持对象,其可读性,易用性,毫不夸张的说可以居所有Shell之首。

本文基于在分析PowerShell病毒过程中的经验,总结了解密被混淆过的PowerShell脚本的一些方法。

0x0 背景

如果想要去混淆,首先得了解有哪些混淆的方法。

在2017年的黑帽大会上,Daniel Bohannon、Lee Holmes专门对此做过演讲,PPT传送门:https://git.laucyun.com/myweb/blog-files/blob/master/ppt/us-17-Bohannon-Revoke-Obfuscation-PowerShell-Obfuscation-Detection-And%20Evasion-Using-Science.pdf

其方法主要包括:转义符(反引号)、简写与通配符*、脚本块、字符串处理、编码、自构造关键字替换等。

0x1 解密过程

脚本传送门:https://git.laucyun.com/myweb/blog-files/blob/master/ipc_ps1/ipc.ps1

1 解密ipc.ps1

首先,看一个已混淆的PowerShell脚本,如下图所示:


图1 已混淆PowerShell脚本

如图1所示,该PowerShell脚本已混淆的面目全非,所以只能先从头尾分析。可以发现混淆后其实只有一行代码,是一条Invoke-Expression命令,其官方文档的相关介绍如下:

The Invoke-Expression cmdlet evaluates or runs a specified string as a command and returns the results of the expression or command. Without Invoke-Expression, a string submitted at the command line would be returned (echoed) unchanged.

Runs commands or expressions on the local computer.

Invoke-Expression
      [-Command] <String>
      [<CommonParameters>]

只需将脚本开头的Invoke-Expression即可去混淆,然后执行如下命令:


图2 解密混淆代码

脚本ipc.ps1解密后的结果,如下图所示:


图3 PowerShell脚本ipc1.ps1

2 解密ipc1.ps1

脚本ipc1.ps1的内容可分为两部分:一是字符串拼接,二是拼接执行字符串命令,重点关注后者,它这里做了一点小小的混淆,正如图3选中部分所示,命令( $ENV:COmSPEc[4,15,25]-jOiN'')解密的结果是iex命令,如下图所示:


图4 解密IEX命令

同理,将脚本末尾|. ( $ENV:COmSPEc[4,15,25]-jOiN'')去除即可去混淆,并执行如下命令:


图5 解密PowerShell脚本ipc1.ps1

脚本ipc1.ps1解密后的结果如下图所示:


图6 PowerShell脚本ipc2.ps1

3 解密ipc2.ps1

脚本ipc2.ps1的原理同ipc1.ps1基本上都一致,它也分为两部分:一是字符串拼接,二是拼接执行字符串命令,命令( $eNV:ComSPeC[4,26,25]-jOiN'')解密的结果是iex命令。

同理,将脚本末尾|& ( $eNV:ComSPeC[4,26,25]-jOiN'')去除即可去混淆,并执行如下命令:


图7 解密PowerShell脚本ipc2.ps1

脚本ipc2.ps1解密后的结果如下图所示:


图8 PowerShell脚本ipc3.ps1

3 解密ipc3.ps1

脚本ipc3.ps1也可分为两部分:一是拼接执行字符串命令,二是字符串拼接,命令$vErboSEPrefErENCe.TOSTriNg()[1,3]+'X'-JOIN'')解密的结果是ieX命令,如下图所示:


图9 解密IEX命令

同理,将脚本末尾& ( $vErboSEPrefErENCe.TOSTriNg()[1,3]+'X'-JOIN'')去除即可去混淆,并执行如下命令:


图10 解密PowerShell脚本ipc3.ps1

解密结果如下图所示:


图11 PowerShell脚本ipc4.ps1

至此,脚本解密已完成。

0x2 参考

...

Tags Read More


Windows 系统安全事件应急响应

by LauCyun Dec 13,2018 14:57:12 8,484 views

本文转载于: https://xz.aliyun.com/t/2524,感谢大表哥@白河愁

1 Windows 的应急事件分类

Windows 系统的应急事件,按照处理的方式,可分为下面几种类别:

  • 病毒、木马、蠕虫事件
  • Web 服务器入侵事件或第三方服务入侵事件
  • 系统入侵事件,如利用 Windows 的漏洞攻击入侵系统、利用弱口令入侵、利用其他服务的漏洞入侵,跟 Web 入侵有所区别,Web 入侵需要对 Web 日志进行分析,系统入侵只能查看 Windows 的事件日志。
  • 网络攻击事件(DDoS、ARP、DNS 劫持等)

2 通用排查思路

入侵肯定会留下痕迹,另外重点强调的是不要一上来就各种查查查,问清楚谁在什么时间发现的主机异常情况,异常的现象是什么,受害用户做了什么样的紧急处理。问清楚主机异常情况后,需要动脑考虑为什么会产生某种异常,从现象反推可能的入侵思路,再考虑会在 Windows 主机上可能留下的痕迹,最后才是排除各种可能,确定入侵的过程。

获取 Windows 的基本信息,如机器名称、操作系统版本、OS 安装时间、启动时间、域名、补丁安装情况,使用systeminfo命令获取。运行msinfo32也可以查看计算机的详细信息。

2.1 直接检查相关日志

任何操作(人、程序、进程)都会导致产生相关日志

2.1.1 Windows 日志简介

日志记录了系统中硬件、软件和系统问题的信息,同时还监视着系统中发生的事件。当服务器被入侵或者系统(应用)出现问题时,管理员可以根据日志迅速定位问题的关键,再快速处理问题,从而极大地提高工作效率和服务器的安全性。
Widdows 通过自带事件查看器管理日志,使用命令eventvwr.msc打开,或者 Windows 10 搜索框直接搜索事件查看器,或者使用开始菜单-Windows 管理工具-事件查看器打开


图1 Windows日志

Windows 日志位置:

  • Windows 2000/Server2003/Windows XP
    \%SystemRoot%\System32\Config\*.evt
  • Windows Vista/7/10/Server2008
    \%SystemRoot%\System32\winevt\Logs\*.evtx

日志审核策略,使用命令auditpol /get /category:*


图2 日志审核策略

其他一些可能会用到的事件日志的位置:

  • C:\Windows\System32\WDI\LogFiles
    • BootCKCL.etl
    • ShutdownCKCL.etl
    • SecondaryLogOnCKCL.etl
    • WdiContext.etl.*
  • C:\Windows\System32\WDI\{guid}\{guid}
    • snapshot.etl
  • C:\Windows\System32\LogFiles\WMI
    • FamilySafetyAOT.etl
    • Wifi.etl
    • LwNetLog.etl
  • C:\Windows\System32\SleepStudy
    • UserNotPresentSession.etl
    • abnormal-shutdown-<yyyy>-<mm>-<hh>-<mm>-<ss>.etl</ss></mm></hh></mm></yyyy>
    • user-not-present-trace-<yyyy>-<mm>--<hh>-<mm>-<ss>.etl</ss></mm></hh></mm></yyyy>
    • ScreenOnPowerStudyTraceSession-<yyyy>-<mm>-<hh>-<mm>-<ss>.etl</ss></mm></hh></mm></yyyy>
Windows 日志
  • 系统日志
    系统日志包含 Windows 系统组件记录的事件。例如,系统日志中会记录在启动过程中加载驱动程序或其他系统组件失败。系统组件所记录的事件类型由 Windows 预先确定。
  • 应用程序日志
    应用程序日志包含由应用程序或程序记录的事件。例如,数据库程序可在应用程序日志中记录文件错误。程序开发人员决定记录哪些事件。
  • 安全日志
    安全日志包含诸如有效和无效的登录尝试等事件,以及与资源使用相关的事件,如创建、打开或删除文件或其他对象。管理员可以指定在安全日志中记录什么事件。例如,如果已启用登录审核,则安全日志将记录对系统的登录尝试。

关于安全日志登录部分的事件 ID 和登录类型代码的含义见下面 2 个表。


图3 事件属性

常用事件ID

常用事件ID含义,如下表:

Event ID(2000/XP/2003) Event ID(Vista/7/8/2008/2012) 描述 日志名称
528 4624 成功登录 Security
529 4625 失败登录 Security
680 4776 成功/失败的账户认证 Security
624 4720 创建用户 Security
636 4732 添加用户到启用安全性的本地组中 Security
632 4728 添加用户到启用安全性的全局组中 Security
2934 7030 服务创建错误 System
2944 7040 IPSEC服务服务的启动类型已从禁用更改为自动启动 System
2949 7045 服务创建 System
登录类型ID

成功/失败登录事件提供的有用信息之一是用户/进程尝试登录(登录类型),但 Windows 将此信息显示为数字,下面是数字和对应的说明:

登录类型 登录类型 描述
2 Interactive 用户登录到本机
3 Network 用户或计算手机从网络登录到本机,如果网络共享,或使用net use访问网络共享,net view查看网络共享
4 Batch 批处理登录类型,无需用户干预
5 Service 服务控制管理器登录
7 Unlock 用户解锁主机
8 NetworkCleartext 用户从网络登录到此计算机,用户密码用非哈希的形式传递
9 NewCredentials 进程或线程克隆了其当前令牌,但为出站连接指定了新凭据
10 Remotelnteractive 使用终端服务或远程桌面连接登录
11 Cachedlnteractive 用户使用本地存储在计算机上的凭据登录到计算机(域控制器可能无法验证凭据),如主机不能连接域控,以前使用域账户登录过这台主机,再登录就会产生这样日志
12 CachedRemotelnteractive 与 Remotelnteractive 相同,内部用于审计目的
13 CachedUnlock 登录尝试解锁

账户类型

  • 用户账户
  • 计算机账户:此帐户类型表示每个主机。 此帐户类型的名称以字符$结尾。 例如,DESKTOP-SHCTJ7L $是计算机帐户的名称。
  • 服务账户:每个服务帐户都创建为特定服务的所有者。 例如,IUSR是IIS的所有者,而krbtgt是作为密钥分发中心一部分的服务的所有者。
应用程序和服务日志

应用程序和服务日志是一种新类别的事件日志。这些日志存储来自单个应用程序或组件的事件,而非可能影响整个系统的事件。

查看 PowerShell 的日志:Microsoft->Windows->PowerShell->OPtions

2.1.2 远程登录事件

攻击者可能造成的远程登录事件

RDP

攻击者使用 RDP 远程登录受害者计算机,源主机和目的主机都会生成相应事件。

重要的事件 ID(安全日志,Security.evtx

  • 4624:账户成功登录
  • 4648:使用明文凭证尝试登录
  • 4778:重新连接到一台 Windows 主机的会话
  • 4779:断开到一台 Windows 主机的会话

远程连接日志(应用程序和服务日志->Microsoft->Windows->-TerminalServices->RemoteConnectionManager->Operational),重要事件 ID 和含义:

  • 1149:用户认证成功
  • 21:远程桌面服务,会话登录成功
  • 24:远程桌面服务,会话已断开连接
  • 25:远程桌面服务,会话重新连接成功

远程连接日志关注RemoteInteractive(10)CachedRemoteInteractive(12)表明使用了 RDP ,因为这些登录类型专用于 RDP 使用。

计划任务和 AT

关注的事件 ID

  • 4624:账户成功登录

计划任务事件Microsoft-Windows-TaskScheduler/Operational.evtx,计划任务 ID 含义:

  • 100:任务已开始
  • 102:任务完成
  • 106:已注册任务(关注点)
  • 107:在调度程序上触发任务
  • 110:用户触发的任务
  • 129:创建任务流程(推出)
  • 140:任务已更新
  • 141:任务已删除
  • 200:运行计划任务
  • 325:启动请求排队

统一后台进程管理器(UBPM)

  • 服务控制管理器 - 管理 Windows 服务
  • 任务计划程序 - 管理 Windows 任务
  • Windows Management Instrumentation - 管理 WMI 供应商
  • DCOM Server Process Launcher - 管理进程外 COM 应用程序
PSExec

PSExec是系统管理员的远程命令执行工具,包含在“Sysinternals Suite”工具中,但它通常也用于针对性攻击的横向移动。

PsExec的典型行为

  • 在具有网络登录(类型3)的远程计算机上将 PsExec 服务执行文件(默认值:PSEXESVC.exe)复制到%SystemRoot%
  • 如果使用-c选项,则通过$Admin共享将文件复制到%SystemRoot%执行命令。
  • 注册服务(默认值:PSEXESVC),并启动服务以在远程计算机上执行该命令。
  • 停止服务(默认值:PSEXESVC),并在执行后删除远程计算机上的服务。

PSExec选项的重要选项:

  • -r:更改复制的文件名和远程计算机的服务名称,默认值:%SystemRoot%\ PSEXESVC.exePSEXESVC
  • -s:由SYSTEM帐户执行。
  • -C:将程序复制到远程计算机,被复制到Admin$%SystemRoot%)。
  • -u:使用特定凭据登录到远程计算机,生成登录类型2和登录类型3 的事件。

可以从System.evtx中查找事件 ID 7045 发现 PSExec,相关的事件 ID

  • Security.evtx
    • 4624:帐户已成功登录
  • Ssystem.evtx
    • 7045:系统中安装了服务

PsExec在执行命令时在远程主机上创建服务,默认服务名称为PSEXESVC,配合检测系统 7045 事件可以确定。

如果使用-r参数更改了默认的服务名称,通过以下特征可以检测 PSExec 的执行:

  • PSExec服务执行文件(默认值:PSEXESVC.exe)被复制到远程计算机上的%SystemRoot%目录中
  • 服务名称与没有.exe扩展名的执行名称相同
  • 服务以“用户模式”执行,而不是“内核模式”
  • “LocalSystem”帐户用于服务帐户
  • 实际帐户用于执行服务执行文件,而不是“SYSTEM”

2.1.3 GUI 的日志工具介绍

Widnows 自带事件管理器就是很不错的日志工具,其他可以了解下Event Log Explorer


图4 Event Log Explorer

可以将目标 IP 的所有日志文件复制出来,然后在其他电脑上使用 Event Log Explorer 进行分析。

其他一些工具:

2.1.4 PowerShell 日志操作

使用 Get-WinEvent

Get-WinEvent @{logname='application','system'} -MaxEvents 1

一些常见日志操作命令:

# Get-WinEvent帮助命令
get-help Get-WinEvent

# 列出所有事件日志
Get-WinEvent -ListLog *

# powershell管理员权限下获取安全事件日志
Get-WinEvent -FilterHashtable @{LogName='Security'}

# 过滤安全事件ID 4624
Get-WinEvent -FilterHashtable @{LogName='Security';ID='4624'}

# 查询今天的应用和系统日志,显示前2条
Get-WinEvent @{logname='application','system';starttime=[datetime]::today } -MaxEvents 2

# 根据ID查询事件
Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Where-Object {$_.ID -eq "4100" -or $_.ID -eq "4104"}

# 查询指定时间内的事件
$StartTime=Get-Date  -Year  2017  -Month  1  -Day  1  -Hour  15  -Minute  30
$EndTime=Get-Date  -Year  2017  -Month  2  -Day  15  -Hour  20  -Minute  00

Get-WinEvent -FilterHashtable @{LogName='System';StartTime=$StartTime;EndTime=$EndTime}


图5 powershell管理员权限下获取安全事件日志

Get-EventLog 的使用可以参考:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-eventlog?view=powershell-5.1

2.1.5 Windows 日志删除和日志集中化

攻击者入侵系统后,很可能会删除日志,比较粗暴的手法是直接删除所有日志和停止日志服务,对于应急来说删除掉的日志本身就是就是入侵的明显特征,根据文件创建时间也能大概判断入侵时间。另外有工具可以删除单条日志,这样只是分析 Windows 日志时对分析人员来说很难找到攻击痕迹,单条日志删除工具:https://github.com/360-A-Team/EventCleaner,另外可以参考:https://github.com/3gstudent/Eventlogedit-evtx--Evolution

对抗删除的的措施是实施日志集中化,从 Windows 7 开始,Windows 记录日志为 XML 格式,可以使用。

2.2 检查账户

检查账户的几种方式:

  • 在本地用户和组里查看,运行lusrmgr.msc
  • 使用net user列出当前登录账号,使用wmic UserAccount get列出当前系统所有账户;
  • 检查注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileListHKEY_LOCAL_MACHINE\SAM\Domains\Account\(默认是 SYSTEM)权限,需要配置成管理员权限查看。

SID 位于HKEY_USERS\和 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList两个密钥中。 用户SID可以在值Profilelist下找到Subkeys(在用户登录系统时创建)。 值ProfileImagePath将列出该特定用户的配置文件的路径。 在操作系统级别,SID可识别无疑问题的帐户。

多用户系统如下:

HKEY_USERS\.DEFAULT
HKEY_USERS\S-1-5-18
HKEY_USERS\S-1-5-19
HKEY_USERS\S-1-5-20
HKEY_USERS\S-1-5-21-129369147-1800279115-1660624850-1000
HKEY_USERS\S-1-5-21-129369147-1800279115-1660624850-1000_Classes
HKEY_USERS\S-1-5-21-129369147-1800279115-1660624850-500
HKEY_USERS\S-1-5-21-129369147-1800279115-1660624850-500_Classesaa

前四个密钥是系统帐户,从计算机到计算机通常是相同的。 

  • HKEY_USERS\.DEFAULT包含全局用户信息
  • HKEY_USERS\S-1-5-18属于“LocalSystem帐户”
  • HKEY_USERS\S-1-5-19用于运行本地服务,是“本地服务帐户”
  • HKEY_USERS\S-1-5-20 是用于运行网络服务的“NetworkService帐户”

其他子键是唯一的SID,它们与已登录系统的各个用户相关联。 他们的解释如下:

  • S将字符串标识为SID。
  • 1是SID规范的版本。
  • 5是标识符权限值。
  • 21-129369147-1800279115-1660624850是域或本地计算机标识符,因计算机与计算机不同,因为它对应于唯一的个人用户帐户。
  • 1000是相对ID(RID)。 默认情况下未创建的任何组或用户的RID均为1000或更高。
  • 1000_Classes包含每用户文件关联和类注册。
  • 500是同一系统上另一个用户的相对ID(RID)。
  • 500_Classes包含第二个用户的文件关联和类注册。

2.3 检查网络连接

2.3.1 检查网络监听和连接的端口和应用程序

netstat -anob

输出主机上的所有侦听和活动连接,包括 PID 和连接到每个连接的程序的名称。 这也告诉 Netstat返回连接的 IP 地址,而不是试图确定它们的主机名。

  • -a:显示所有连接和侦听端口。
  • -b:显示在创建每个连接或侦听端口时涉及的可执行程序。在某些情况下,已知可执行程序承载多个独立的组件,这些情况下,显示创建连接或侦听端口时涉及的组件序列。在此情况下,可执行程序的名称位于底部 [] 中,它调用的组件位于顶部,直至达到 TCP/IP。注意,此选项可能很耗时,并且在你没有足够权限时可能失败。
  • -n:以数字形式显示地址和端口号。
  • -o:显示拥有的与每个连接关联的进程 ID。
  • -r:显示路由表。

结合findstr命令查找特定的端口或程序。


图6 查找443端口的结果

发现的感觉异常的 IP 地址可以在威胁情报平台上查询,如果是已知的恶意 IP,可以比较快速的确认攻击方式。

2.3.2 防火墙配置

netsh firewall show all

Windows 10 自带的网络连接可以参考:https://betanews.com/2018/07/31/all-the-websites-windows-10-connects-to-clean-install/

2.4 检查进程

进程通常结合网络查看异常,先检查异常的网络连接,再获取由哪个进程生成的网络连接:

netstat -abno | find "port number"

tasklist | findstr PID

使用 wmic 命令获取进程信息

wmic process | find "Proccess Id" > proc.csv

Get-WmiObject -Class Win32_Process

Get-WmiObject -Query  "select * from win32_service where name='WinRM'" -ComputerName Server01, Server02 | Format-List -Property PSComputerName, Name, ExitCode, Name, ProcessID, StartMode, State, Status

PowerShell 的其他关于进程和网络的命令

Get-Process

Get-NetTCPConnection
Get-NetTCPConnection -State Established

# 进程跟服务的对应关系
tasklist /svc

使用 SysinternalsSuite 的 procexp 可以获取进程比较详细的信息,比如真实路径、加载的 DLL 文件等、CPU 和内存使用情况等。


图7 Process Explorer

当然也可以使用内存管理器。

查看可疑的进程及其子进程。可以通过观察以下内容:

  • 没有签名验证信息的进程
  • 没有描述信息的进程
  • 进程的属主
  • 进程的路径是否合法
  • CPU或内存资源占用长时间过高的进程

可以获取进程关联的文件 MD5 值,然后发送到威胁情报平台上辅助检查。进程关联的文件也可以使用在线病毒检测平台上直接检测。

2.4.1 内存 Dump

有 2 种比较方便的方法:

第一种是使用系统自带功能,在计算机属性,系统属性,高级选项卡中选择“启动和故障恢复设置”,选择完全转储内存,然后点击确定,系统会提示重启。


图8 内存dump

重启后在配置的文件位置可以找到上次转储的内存文件。

另外一种方法,使用 SysinternalsSuite 工具集的 notmyfault64 工具,在使用管理员权限的命令行模式下(cmd、PowerShell)运行:

NotMyFault64.exe /crash

2.4.2 内存分析

利用 Volatility 进行内存取证,分析入侵攻击痕迹,包括网络连接、进程、服务、驱动模块、DLL、handles、检测进程注入、检测Meterpreter、cmd历史命令、IE浏览器历史记录、启动项、用户、shimcache、userassist、部分rootkit隐藏文件、cmdliner等。

参考:https://xz.aliyun.com/t/2497

2.5 检查开机启动和运行服务

2.5.1 开机启动

关于开机启动需要分析的位置:

  • 注册表中的关于开机启动的位置
    • HKLM\Software\Microsoft\Windows\CurrentVersion\Runonce
    • HKLM\Software\Microsoft\Windows\CurrentVersion\policies\Explorer\Run
    • HKLM\Software\Microsoft\Windows\CurrentVersion\Run
    • HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run
    • HKCU\Software\Microsoft\Windows\CurrentVersion\Run
    • HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
    • (ProfilePath)\Start Menu\Programs\Startup
  • 开始菜单,启动项里(C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
  • 任务管理器,启动选项卡,或者运行 msconfig,查看启动选项卡
  • 运行gpedit.msc在本地组策略编辑器里查看开机运行脚本,包括计算机配置和用户配置的。
  • 使用 SysinternalsSuite 工具集的 Autoruns 工具查看开机启动项目

2.5.2 查看服务状态

服务状态,自动启动配置,在 PowerShell 下可以运行:

Get-Service

# 运行service命令
service

运行services.msc可以打开 Windows 服务工具,常见的 GUI 界面。


图11 Windows 服务

2.6 检查计划任务

存放计划任务的文件

  • C:\Windows\System32\Tasks\
  • C:\Windows\SysWOW64\Tasks\
  • C:\Windows\tasks\
  • *.job(指文件)

使用命令查看计划任务

schtasks

运行taskschd.msc打开计划任务面板,或者从计算机管理进入,直接查看计划任务。


图12 计划任务

也可以使用 SysinternalsSuite 工具集的 Autoruns 工具查看计划任务。


图13 Autoruns查看计划任务

2.7 检查文件

检查可疑文件的思路,一种是通过可疑进程(CPU 利用率、进程名)关联的文件,一种是按照时间现象关联的文件,文件大小也可以 作为辅助的判断方法,文件的操作可以使用Get-ChildItem命令查看。需要关注的文件位置:

  • 下载目录
  • 回收站文件
  • 程序临时文件
  • 历史文件记录
  • 应用程序打开历史
  • 搜索历史
  • 快捷方式(LNK)
  • 驱动
    driverquery
  • 进程 DLL 的关联查询
    tasklist -M
  • 共享文件
  • 最近的文件
    %UserProfile%\Recent
  • 文件更新
  • 已安装文件
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
  • 异常现象之前创建的文件

2.8 检查注册表

注册表目录含义:

  1. HKEY_CLASSES_ROOT(HKCR):此处存储的信息可确保在Windows资源管理器中执行时打开正确的程序。它还包含有关拖放规则,快捷方式和用户界面信息的更多详细信息。
  2. HKEY_CURRENT_USER(HKCU):包含当前登录系统的用户的配置信息,包括用户的文件夹,屏幕颜色和控制面板设置。HKEY_USERS中特定于用户的分支的别名。通用信息通常适用于所有用户,并且是HKU.DEFAULT。
  3. HKEY_LOCAL_MACHINE(H​​KLM):包含运行操作系统的计算机硬件特定信息。它包括系统上安装的驱动器列表以及已安装硬件和应用程序的通用配置。
  4. HKEY_USERS(HKU):包含系统上所有用户配置文件的配置信息,包括应用程序配置和可视设置。
  5. HKEY_CURRENT_CONFIG(HCU):存储有关系统当前配置的信息。

一些重要的注册表键

hklm:\Software\Microsoft\Windows\CurrentVersion\policies\system
hklm:\Software\Microsoft\Active Setup\Installed Components
hklm:\Software\Microsoft\Windows\CurrentVersion\App Paths
hklm:\software\microsoft\windows nt\CurrentVersion\winlogon
hklm:\software\microsoft\security center\svc
hkcu:\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths
hkcu:\Software\Microsoft\Windows\CurrentVersion\explorer\RunMru
hklm:\Software\Microsoft\Windows\CurrentVersion\explorer\Startmenu
hklm:\System\CurrentControlSet\Control\Session Manager
hklm:\Software\Microsoft\Windows\CurrentVersion\explorer\ShellFolders
hklm:\Software\Microsoft\Windows\CurrentVersion\ShellExtensions\Approved
hklm:\System\CurrentControlSet\Control\Session Manager\AppCertDlls
hklm:\Software\Classes\exefile\shell\open\command
hklm:\BCD00000000
hklm:\system\currentcontrolset\control\lsa
hklm:\Software \Microsoft\Windows\CurrentVersion\Explorer\BrowserHelper Objects
hklm:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
hkcu:\Software\Microsoft\Internet Explorer\Extensions
hklm:\Software\Microsoft\Internet Explorer\Extensions
hklm:\Software\Wow6432Node\Microsoft\Internet Explorer\Extensions

活用注册表编辑器的搜索功能,根据进程名称、服务名称、文件名称搜索注册表。

3 特定事件痕迹检查

3.1 挖矿病毒应急

3.1.1 传播方式

通常可能的传播方式:

  1. 通过社工、钓鱼方式下载和运行了挖矿程序(邮件、IM 等)
  2. 利用计算机系统远程代码执行漏洞下载、上传和执行挖矿程序
  3. 利用计算机 Web 或第三方软件漏洞获取计算机权限,然后下载和执行挖矿程序
  4. 利用弱口令进入系统,下载和执行挖矿程序
  5. 执行 Web 页面的挖矿 JS 脚本

3.1.2 挖矿程序特点

  • CPU、GPU、内存利用率高;
  • 网络会连接一些矿工 IP,可以通过威胁情报获取。

3.1.3 挖矿程序应急目的

  • 找出入侵原因
  • 找到挖矿程序,并删除

挖矿事件应急可能需要对样本进行分析,需要二进制的一些分析能力,通过提取样本后确认样本分类、行为、危害。

3.2 勒索病毒事件应急

3.2.1 传播方式

通常可能的传播方式:

  1. 通过社工、钓鱼方式下载和运行了勒索程序(邮件、IM 等)
  2. 利用计算机系统远程代码执行漏洞下载、上传和执行勒索病毒
  3. 利用计算机 Web 或第三方软件漏洞获取计算机权限,然后下载和执行勒索病毒
  4. 利用弱口令进入计算机系统,下载和执行勒索病毒

3.2.2 勒索病毒特点

  • 各种数据文件和可执行程序生成奇怪的后缀名;
  • 明显的提示,要交赎金

3.3.3 勒索病毒应急目的

  • 如果是重要数据,交付赎金恢复数据;
  • 找到入侵的原因,排查同类漏洞,并进行加固(一般是重装)

确认勒索病毒后要立即拔掉网线,限制传播范围。

3.3 应急示例

4 Sysinternals Utilities

工具中有些是命令行工具,有些是有 GUI 界面,作用:

  • 使用Process Explorer显示详细的流程和系统信息
  • 使用Process Monitor捕获低级系统事件,并快速过滤输出以缩小根本原因
  • 列出,分类和管理在您启动或登录计算机时运行的软件,或运行Microsoft Office或Internet Explorer时运行的软件
  • 验证文件,正在运行的程序以及这些程序中加载的模块的数字签名
  • 使用可以识别和清除恶意软件感染的Autoruns,Process Explorer,Sigcheck和Process Monitor功能
  • 检查文件,密钥,服务,共享和其他对象的权限
  • 使用 Sysmon 监控整个网络中与安全相关的事件
  • 当进程满足指定条件时生成内存转储
  • 远程执行进程,并关闭远程打开的文件
  • 管理Active Directory对象并跟踪LDAP API调用
  • 捕获有关处理器,内存和时钟的详细数据
  • 对无法启动的设备,文件使用中的错误,无法解释的通信以及许多其他问题进行故障排除
  • 了解其他地方没有详细记录的Windows核心概念

下载:https://docs.microsoft.com/en-us/sysinternals/downloads/

4.1 常用工具介绍

4.1.1 Autoruns

可以方便的查看自启动、计划任务和运行服务等,通过关联右键菜单可以获取更详细的内容。


图14 Autoruns

4.1.2 Process Explorer

Process Explorer进程浏览器,用来查看计算机上运行的进程的状态(CPU、内存、句柄、加载dll、线程及堆栈等)。


图15 Process Explorer

4.1.3 ADExplorer

Active Directory Explorer(AD Explorer)是一种高级 Active Directory(AD)查看器和编辑器。 您可以使用 AD Explorer 轻松导航 AD 数据库,定义收藏位置,查看对象属性和属性,而无需打开对话框,编辑权限,查看对象的架构,以及执行可以保存和重新执行的复杂搜索。

AD Explorer 还包括保存 AD 数据库快照以进行脱机查看和比较的功能。 加载已保存的快照时,您可以像实时数据库一样导航和浏览它。 如果您有两个 AD 数据库快照,则可以使用 AD Explorer 的比较功能查看它们之间更改的对象,属性和安全权限。

4.1.4 TCPView

查看网络连接情况。


图16 TCPView

4.1.5 PSExec

像 Telnet 这样的实用程序和 Symantec 的 PC Anywhere 等远程控制程序允许您在远程系统上执行程序,但是设置起来很麻烦,并且要求您在要访问的远程系统上安装客户端软件。 PsExec 是一种轻量级的 telnet 替代品,可让您在其他系统上执行进程,完成控制台应用程序的完全交互,而无需手动安装客户端软件。 PsExec 最强大的用途包括在远程系统上启动交互式命令提示和 IpConfig 等远程启用工具,否则它们无法显示有关远程系统的信息。

使用可以参考:https://www.itprotoday.com/management-mobility/psexec

4.1.6 LogonSessions

列出了当前活动的登录会话,如果指定-p选项,则列出每个会话中运行的进程。


图17 LogonSessions

4.2 Troubleshooting with the Windows Sysinternals Tools 2nd Edition

这是一本书,介绍 Sysinternals 工具集的使用。

5 其他

  • 关注近期的安全事件趋势,定期查看 CNCERT 的安全报告,其他一些杀毒软件公司的论坛也要关注;
  • 结合近期的应急,对每次应急出现的新状况进行总结分析,一段时间内的应急需求基本是一致的;
  • 关注几个威胁情报中心,可以分析域名、IP、文件 MD5,比较方便判断攻击方式;
  • 准备好杀毒盘和 Live 盘,可以利用 U 盘做一个专用的应急响应工具包
  • Webshell 查杀
  • 勒索软件基本没有办法,重要数据只能交赎金,不过也是有些特定的勒索病毒能恢复文件
  • 如果未作 Windows 的日志集中化 ,如果入侵删掉所有日志, 大部分情况下只能呵呵,查一下可能的入侵链路上的其他设备、同网段设备有什么日志;
  • 弱口令是很常见的入侵事件原因;
  • 眼见为实,证据说话,不要被客户诱导;
  • Windows 的攻击方式可以了解一下ATT&CK 矩阵

6 参考

...

Tags Read More


一种基于vlmcsd激活Windows或Micrsoft Office的方法

by LauCyun Aug 18,2018 00:36:22 40,427 views

在虚拟货币盛行的年代,为了挖矿造成各种勒索病毒、木马无孔不入,又由于盗版Windows在国内的使用量很大,导致病毒的感染量也很多。下面是网友血淋淋的案例:

所以,为了不被病毒找上门,而vlmcsd正好解决了问题,本文将介绍如何利用vlmcsd搭建可激活Windows、Micrsoft Office服务器。

vlmcsd的官方介绍如下:

KMS Emulator in C (currently runs on Linux including Android, FreeBSD, Solaris, Minix, Mac OS, iOS, Windows with or without Cygwin).

目前vlmcsd支持的Windows、Micrsoft Office版本有:

  • Windows:
    • Windows 7
    • Windows 8 / 8.1
    • Windows 10
    • Windows Server 2008
    • Windows Server 2012
    • Windows Server 2016
  • Micrsoft Office
    • Micrsoft Office 2010
    • Micrsoft Office 2013
    • Micrsoft Office 2016

但是,Windows系统和Micrsoft Office软件都必须是VOL版本。

0x0 准备

首先,准备一台电脑(虚拟机),并装好Windows系统和Micrsoft Office软件,下面是我的实验环境:

  • Windows系统:
    • 版本:Windows 10 1803 企业版 64位
    • 文件名:cn_windows_10_multi-edition_vl_version_1709_updated_sept_2017_x64_dvd_100090774.iso
    • 下载地址:ed2k://|file|cn_windows_10_multi-edition_vl_version_1709_updated_sept_2017_x64_dvd_100090774.iso|4630972416|8867C5E54405FF9452225B66EFEE690A|/
    • SHA1:6A4335595675099D9164C0CF3BA5F4A09ECEED91
  • Micrsoft Office:
    • 版本:Micrsoft Office 2016 专业增强版
    • 文件名:SW_DVD5_Office_Professional_Plus_2016_64Bit_ChnSimp_MLF_X20-42426.ISO
    • 下载地址:ed2k://|file|SW_DVD5_Office_Professional_Plus_2016_64Bit_ChnSimp_MLF_X20-42426.ISO|1123452928|31087A00FF67D4F5B4CBF4AA07C3433B|/
    • SHA1:AEB58DE1BC97685F8BC6BFB0A614A8EF6903E318

然后,准备一个Linux服务器(VPS)和vlmcsd,vlmcsd下载地址:https://github.com/Wind4/vlmcsd/releases

0x1 搭建vlmcsd服务器

首先,根据实际生产环境选择Linux,然后根据CPU架构选择Intel,最后选择vlmcsd或者vlmcsdmulti都可以,如图1所示:


图1 vlmcsd

然后,复制上面选择的文件vlmcsd-x64-musl-static到服务器中:

scp vlmcsd-x64-musl-static root@192.168.0.104:/opt/vlmcsd

并修改vlmcsd-x64-musl-static的权限为可执行:

chmod u+x /opt/vlmcsd/vlmcsd-x64-musl-static

最后,运行vlmcsd

/opt/vlmcsd/vlmcsd-x64-musl-static

注意:

  • 如果没有报错,就运行成功了,如果报错,检查端口占用。
  • 如果运行成功,网络还不通的话,请检查是否开启1688/tcp端口。

0x2 激活Windows

用管理员权限运行CMDPowerShell,输入如下命令:

slmgr /skms 192.168.0.104
slmgr /ato
slmgr /xpr

验证一下是否激活:

slmgr.vbs -dlv

如图2所示即为激活成功。


图2 Windows10激活成功

0x3 激活Office

用管理员权限运行CMDPowerShell,输入如下命令:

# 进入office安装目录
cd “C:\Program Files\Microsoft Office\Office16”
# 注册kms服务器地址
cscript ospp.vbs /sethst:192.168.0.104
# 执行激活
cscript ospp.vbs /act


图3 Office激活过程

验证一下是否激活:

# 查看状态
CSCRIPT OSPP.VBS /DSTATUS

如图4所示即为激活成功。


图4 Office激活成功

0x4 参考

...

Tags Read More


实现Windows系统(非服务器版)多用户登录远程桌面的方案

by LauCyun Jun 28,2018 16:30:23 54,156 views

在渗透测试中,经常会接触Windows服务器的远程桌面服务,通过界面对服务器进行管理。而对于普通的Windows系统,在某些条件下也需要进行界面操作。

虽然我们可以通过编写程序来实现界面操作(捕获桌面信息、压缩传输、发送鼠标键盘消息等),但是如果能够使用远程桌面服务,岂不是更加方便高效。本文将分析Windows系统(非服务器版)多用户登录远程桌面的解决方案。

本文中涉及Kali Linux的Metasploit操作靶机,都是基于攻击机利用MS17-010漏洞渗透进靶机。

0x00 实验环境

攻击机:

  • 系统:Kali Linux
  • IP地址:192.168.0.112
  • 工具:
    • Metasploit
    • nmap

靶机:

  • 系统:Windows 7 sp1 x64
  • IP地址:192.168.0.152

工具:

0x01 如何开启远程桌面服务

1 查询远程桌面服务开启状态

查询系统是否开启远程桌面服务,命令如下:

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections

执行结果如图1所示:


图1 远程桌面服务状态

如果fDenyTSConnections的值为0x1则表示关闭;0x0表示开启。

2 查询远程桌面服务端口号

查询远程桌面服务端口号,命令如下:

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber

查询结果如图2所示:


图2 远程桌面服务端口号

端口格式为16进制,0xd3d转换为十进制是3389

3 开启远程桌面服务

如果远程桌面服务关闭的话,则需要开启,命令如下:

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f

或者,通过导入reg文件(导入命令为regedit /s 1.reg),文件内容如下:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"fDenyTSConnections"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
"PortNumber"=dword:00000d3d

执行结果如图3所示:


图3 开启远程桌面服务

如果系统未配置过远程桌面服务,第一次开启时还需要添加防火墙规则允许3389端口,如图4所示:


图4 启用远程桌面Windows防火墙例外

修改防火墙配置,允许3389端口的命令如下:

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

4 远程桌面连接方法

  • Kali Linux:
    rdesktop 192.168.0.152:3389
    
  • Windows:
    mstsc.exe

0x02 Windows只允许单用户登录(非服务器版本)

远程登录时,如果使用与系统相同的登录账户(Administrator),系统将被切换到登录界面,如图5所示:


图5 系统将被切换到登录界面

如果使用不同的账户,登录时则提示其他用户已登录到此计算机,如6所示:


图6 登录提示

选择继续后,系统桌面将弹框提示是否断开当前连接(30秒后默认选择同意,退回到登录界面),如图7所示:


图7 系统连接确认界面

这种现象在渗透测试中肯定是很容易被电脑使用者发现,所以就要解决这个问题。

0x03 Windows 多用户登录的方法(非服务器版本)

为了解决Windows非服务器版系统多用户同时登录的问题,下面给出了3种方法:方法1和方法2都是修改termsrv.dll;方法3是通过注入rdpwrap.dlltermsrv.dll所在进程。

1  Mimikatz

Mimikatz是由C编写的开源小工具,功能非常强大。它支持从Windows系统内存中提取明文密码、哈希、PIN码和Kerberos凭证,以及pass-the-hash、pass-the-ticket、build Golden tickets等数种黑客技术。

Mimikatz分为x64和Win32两个版本,x64最高支持Windows 10 1083,Win32最高支持Windows 8.1。

直接通过运行命令即可安装补丁,命令如下:

privilege::debug
ts::multirdp

如图8所示就表示安装成功。


图8 安装Mimikatz补丁

使用不同的账户(hacker)即可登录成功,如图9所示:


图9 多用户登录成功

不足之处,该方法在系统重启后会失效。

2 修改termsrv.dll

上面,通过Mimikatz安装补丁的方法在系统重启后就失效,那有啥方法使其重启依然有效呢?

通过查看Mimikatz的源码,在modules/kuhl_m_ts.c中找到修改方法:

由于Windows在开启远程桌面服务服务时,会加载termsrv.dll,如下图10所示:


图10 加载的termsrv.dll

所以,通过修改termsrv.dll即可实现多用户登录,具体操作如下:

  • x64
    • Windows NT 6.0:
      查找:
      8B 81 38 06 00 00 39 81 3C 06 00 00 75
      替换为:
      C7 81 3C 06 00 00 FF FF FF 7F 90 90 EB
    • Windows NT 6.x:
      查找:
      39 87 3C 06 00 00 0F 84
      替换为:
      C7 87 3C 06 00 00 FF FF FF 7F 90 90 
    • Windows 8.1:
      查找:
      39 81 3C 06 00 00 0F 84
      替换为:
      C7 81 3C 06 00 00 FF FF FF 7F 90 90 
    • Windows 10 1803:
      查找:
      8B 99 3C 06 00 00 8B B9 38 06 00 00 3B DF 0F 84
      替换为:
      C7 81 3C 06 00 00 FF FF FF 7F 90 90 90 90 90 E9
  • x86

上面Windows NT对应的系统版本,请参考:https://en.wikipedia.org/wiki/Microsoft_Windows#Timeline_of_releases

接着,使用CFF Explorer打开C:\windows\system32\termsrv.dll,选择Hex Editor,然后查找39873C0600000F84,如图11所示:


图11 CFF Explorer查找39873C0600000F84

从图11得知,0x000173C6即为39873C0600000F84的起始位置。

0x000173C6处开始,选中12字节,替换为C7873C060000FFFFFF7F9090,替换后保存dll。如图12所示:


图12 修改termsrv.dll

接着,替换termsrv.dll(需要先停止远程桌面服务才能替换),替换termsrv.dll后,重新开启服务TermService。过程如下:

  • 查看远程桌面服务服务状态:
    sc qc TermService
    
  • 如果远程桌面服务服务启动,则需要先关闭:
    net stop TermService /y
    
  • 删除原termsrv.dll
    del c:\windows\system32\termsrv.dll
    
  • 替换新termsrv.dll
  • 启动服务
    net start TermService
    

Ok,通过修改termsrv.dll的方法,重启后也依然有效。

但是,这种方法比较麻烦,而且每个版本修改termsrv.dll的位置和内容都不一样。

3  RDPWrap

RDPWrap是恢复远程桌面服务被阉割的功能,  适用于Windows Vista 、7、8、8.1、10 。官方的介绍如下:

The goal of this project is to enable Remote Desktop Host support and concurrent RDP sessions on reduced functionality systems for home usage.

RDP Wrapper works as a layer between Service Control Manager and Terminal Services, so the original termsrv.dll file remains untouched. Also this method is very strong against Windows Update.

在kali中解压RDPWrap-v1.6.2.zip,其中解压后的文件有:

File name Description
RDPWInst.exe RDP Wrapper Library installer/uninstaller
RDPCheck.exe Local RDP Checker (you can check the RDP is working)
RDPConf.exe RDP Wrapper Configuration
install.bat Quick install batch file
uninstall.bat Quick uninstall batch file
update.bat Quick update batch file

将解压后的文件上传到靶机中,如图13所示:


图13 上传RDPWrap至靶机

接着,就是运行install.bat进行安装RDPWrap,如图14所示:


图14 安装RDPWrap

释放rdpwrap.dllrdpwrap.iniC:\Program Files\RDP Wrapper文件夹,rdpwrap.dll会被加载到同termsrv.dll相同的进程,如图15所示:


图15 rdpwrap.dll会被加载到termsrv.dll相同的进程

同样也可以在靶机中,运行RDPConfig.exe,看到Diagnostics后面都是绿色的,并且Listener state是Listening [fully supported],如图16所示:


图16 RDPWrap配置信息

此时,能够使用不同用户进行远程连接。

0x04 总结

本文介绍了三种支持远程桌面多用户登录的方法,适用于不同条件,对于替换termsrv.dll的方法,需要根据系统具体版本,使用不同的替换位置。最方便、最快捷的方法是安装RDPWrap。

0x05 参考

...

Tags Read More