【技术分享】深入分析PsExec执行行为
转载自:http://bobao.360.cn/learning/detail/3186.html
2016-11-16 14:46:48 来源:安全客 作者:WisFree
阅读:6482次 点赞(3) 收藏(22)
翻译:WisFree
预估稿费:200RMB(不服你也来投稿啊!)
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
灵感来源
前段时间,我收到了Mark Russinovich的新书-《Troubleshooting with the Windows Sysinternals Tools(2nd Edition)》。拜读完这本大作之后,我脑海中便产生了撰写这篇文章的灵感。虽然我在上周就收到这本书了,但是我到现在仍然对它爱不释手。不仅因为这是一本非常棒的书,而且这本书的主题也是我非常感兴趣的一个方向。比如说,Mark的新书中提供了大量关于Windows DFIR的知识,而这些知识是我们很难在其他地方找到的。因此我建议对这方面话题感兴趣的同学赶紧入手这本书[亚马逊传送门]。
为了更好地理解我在这篇文章中所讲述的内容,我建议各位先在自己的测试环境中安装Windows Sysinternals Suite系统工具套件[下载地址]。
如果你此前并不了解DFIR,并且打算学习这方面内容以提升自己技能的话,我建议你赶紧入手这本书。在过去的几年里,我的工作就是对各种网络攻击事件进行调查和分析,我曾见到过有很多攻击者选择利用Sysinternals工具包来完成他们的攻击任务。不仅如此,有的攻击者甚至在攻击过程中的每一步都会使用这些工具。这些工具非常的流行,有的Windows用户甚至还会去抱怨Mark撰写这样的一本书,因为攻击者可以利用这本书中的内容来编写计算机病毒。
写给DFIR从业者的话:我建议各位一定要深入理解Sysinternals套件中各个工具的运行机制和实现原理。如果你可以做到这一点,那么当你在调查某个网络攻击事件时,你就可以在不需要对恶意软件进行逆向工程分析的情况下了解这款恶意软件的工作机制。如果你能够知道攻击者如何去利用这些工具,你就可以模拟他们的攻击行为,了解他们的操作方法,并且更加清楚地了解到你所在的整个环境可能会存在怎样的攻击面。
写给威胁检测人员的话:你可以通过追踪Sysinternals工具所抛出的异常来迅速检测到环境中可能存在的安全威胁。在本文接下来的内容中,我将会告诉大家如何对该套件中的部分工具进行追踪与分析。
PsExec
在本文中,我所要讲解的第一个工具就是PsExec。我不打算在这里花时间去照本宣科地背诵书本中的内容,我会结合我的工作经验和实践技巧来给大家进行讲解。
PsExec可以允许你在本地主机中执行远程服务器上的命令。PsExec可以算是一个轻量级的 telnet 替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与命令控制台几乎相同的实时交互性。PsExec最强大的功能就是在远程系统和远程支持工具(如 IpConfig)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。
系统管理员通常会使用这款工具来远程执行脚本,例如组件安装脚本或数据收集脚本。这种方法不仅操作起来非常的简单,而且还可以节省资源。最重要的是,这种方法还可以避免服务器出现漏洞。除此之外,很多人也会将其用于软件部署的过程中,虽然也有很多其他的工具可以选择,但是PsExec追求的是性价比。
同样的,攻击者也是考虑到了这些因素所以才会选择PsExec的。除了上述原因之外,还有下面这几点:
1. 这些工具属于合法工具,因此当反病毒软件或终端检测产品检测到了这类恶意软件之后,有可能只会发出警告,或者直接忽略它们。具体将取决于用户的设置情况。
2. 这些工具可以直接从微软的官方网站免费下载获取。
3. 如果攻击者在恶意软件中使用这些工具的话,目标用户的计算机中很可能已经安装好这些工具了,所以这也为攻击者提供了方便。
我在之前的工作过程中,曾经发现过一个经验极其丰富的黑客组织。当时他们就是将一个修改版的PsExec来作为主要的恶意软件部署工具。由于只有他们会使用这种方法来部署恶意软件,因此任何一名安全分析人员都可以检测到该组织的恶意软件。
在这里,我必须要再次强调一下,对于DFIR分析人员来说,深入理解这些工具真的非常重要。接下来,我会告诉大家如何去检测环境中是否存在PsExec的活动。
PsExec的执行与服务安装
在绝大多数情况下,我们只有在与远程系统交互时才会使用到PsExec。以下几点是我们需要注意的:
1. PSEXESVC服务将会安装在远程系统中,此时将会生成Event 4697和Event 7045这两种事件日志。需要注意的是,Event 4697日志记录将有可能包含账号信息。
2. 还有可能预生成Event 4624和Event 4652 Windows事件日志,日志会记录下该工具的使用数据。
3. 可执行程序PSEXESVC.EXE将会被提取至Windows目录下,然后再执行远程操作。
在PSEXESVC.EXE的提取和执行过程中你需要注意的是:
1. 如果启用了这个服务的话,系统中将会生成一个关于PSEXESVC.EXE的文件。
2. 这个文件将会被保存在AppComapt或Amcache之。在新版操作系统下,
这个文件将会替换掉RecentFileCache.bcf。
PsExec命令在目标系统中每执行一次,都会向目标系统写入一个新的可执行文件。PsExec提取PSEXESVC.EXE的操作也不止一次,它的每一个示例都会进行一次这样的操作。这样一来,每一次提取都会生成新的元数据和新的时间戳。
首先,每当你使用PsExec来与目标系统进行连接时,你都会收到一个AppCompat条目。先看看下面这张图片,其中显示的是ShimCacheParser.py的输出数据:
你会发现输出路径都是相同的,但是每一个PSEXESVC实例的生成时间都不同。在查看了相关的Event 7045事件日志条目之后,你也许就可以发现其中的关联性了:
请注意事件日志条目与AppCompat条目之间的关联,你发现了其中的差异吗?
接下来,让我们看看51BA46F2.pf文件(PSEXESVC.EXE的解析文件)的输出信息:
实用参数
如果你碰巧发现了可疑的PsExec活动,那么下面这几个参数也许可以帮助你识别这些可疑活动。
1.参数“-r”可以对远程服务进行自定义配置。我曾见到过有攻击者使用过这个参数,这将增加我们识别PsExec服务的难度。但是很多情况下,网络管理员也会使用这个参数来进行合法操作。所以了解你的网络环境是非常重要的。我之前所说的那个黑客组织曾经在攻击过程中,还将远程系统中原本的PSEXESVC.EXE文件重命名为了PRAMEPKG.EXE。除此之外,其他的一些服务名称也被修改了。具体如下图所示:
2.参数“-u”和“-p”指的就是用于远程登录的用户名和密码。如果参数“-p”为空,系统则会要求用户提供相应的密码。系统管理员请注意,请不要将这部分信息硬编码在你的脚本中,因为攻击者将有可能获取到凭证数据。
3.参数“-c”可以允许我们将某个特定的程序拷贝到远程系统中并执行。
4.参数“-s”将会用系统账号执行远程命令。
总结
如果你发现了PsExec活动,请赶紧检查这个活动是否使用了你的sysadmins权限。在一个大规模的环境下,这种方法可以迅速地帮你过滤掉假阳性,并且显著地降低环境中出现安全事故的可能性。
作者:ssooking 联系邮箱:c3Nvb2tpbmdAeWVhaC5uZXQ=
若无特殊说明,所发博文皆为原创,转载请务必注明出处、保留原文地址。欢迎交流分享!如果您有任何问题,请联系我!