安全路透社
当前位置:安全路透社 > 网络转载 > 正文

经验分享:如何确保渗透测试Windows系统时不被管理员发现

作为一名从业多年的安全老司机,还是第一次尝试写点有关安全内容来,说来自己感觉有些惭愧,如果有不好的地方还请大家多拍砖。

大家都知道,目前圈内主流渗透手段基本上是通过Web前段进行漏洞发现并利用,实现webshell上传的目的。在我们接触的Web程序开发技术中以ASP、ASPX、PHP、JSP等为主流。假如你想通过这些渠道轻松拿到系统管理权限,恐怕会受到一些条件限制。

可是,我们又希望获得本地系统的管理权限,该怎么办呢?

如今大多都是采用创建本地账户或进行后门反弹,可是这种做法又很容易被细心的管理员所发现。面对这种尴尬局面,又该如何破解才好?

今天我就和大家来分享下个人心得。

身为安全圈的老司机,侦查当然是第一步工作,因此你要先了解当前目标账户内的信息情况(这里可不是指XXX的银行卡信息哦!)。也就是说你需要通过与对方建立隐性连接,通过代码探寻到当前系统账户的使用状态及相关账户等(net user & net accounts)信息。具体如下图展示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

单纯的了解系统账户使用状态和信息是无法满足我们当前需求的,还需要深入了解更多信息。那么我们该了解点什么好呢?当然是查看系统中本地用户组信息(net localgroup)喽,不然你切入系统时如何借助伪身份来实现对系统主账户的欺诈行为呢!如下图所示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

好啦,既然该了解的信息已经知道差不多了,下面开始进入正题:创建、伪装。这时,你需要创建一个正常的新账户和密码(net user mjOI 123456),以便进入到系统当中。如下图所示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

接着再想办法让自己所创建的账号顺利的混入到管理员组中去(net localgroup administrators mjOI/add),成为它们当中的一员。实现这步操作就要考验各位安全司机的伪装技术了。如下图所示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

很快,我们成功的将新建账户加入到管理员组中(net localgroup administrators)。如下图所示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

当这些都完成后,我们该做些什么呢?不要说你急着大姑娘赶花轿哦!

既然上步操作中我们成功的在系统内植入了一个可见的用户身份进入管理组,那么下面还需要一个隐藏身份(有种电影大片中双料间谍的赶脚吧,哇嘎嘎!),继续创建新账户,只是与前一个账户不同的是,当前创建账户为隐藏属性(net user hacker$123456/add)。如下图所示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

可能有人会忍不住问到,你创建的这个账户既然是隐藏属性,那如果想找到它该去哪里呢?

如果你是以一名老司机身份进行提问,个人感觉还是考虑回炉一番吧。如果是新人提问,请接着看下面的内容。

当你创建这个新的隐藏属性账户成功后,却发现无法正常在用户目录中找到它。没有关系,你可以通过计算机管理->本地用户和组->用户选项这个功能进行查看,很顺利的发现它就在用户列表中。

经验分享:如何确保渗透测试Windows系统时不被管理员发现

只是,这种方法存在先天缺陷。别看你在代码界面中无法找到,而是要通过系统窗口界面来了解。可一旦系统被重新启动,你创建的隐藏属性账户会直接暴露在登录界面下被管理员轻易看到。

经验分享:如何确保渗透测试Windows系统时不被管理员发现

那么我们该用什么方法将它彻底隐藏掉而不被管理员重启系统后所发现呢?

请看下面的代码内容:

reg add hkey_local_machine\software\Microsoft\WindowsNt\CurrentVersion\Winlogon\SpecialAccounts\Userlist/V hacker$/T

reg_dword/do

这段代码中的内容为你对系统注册表中某一个特定用户属性值进行修改,从而实现将需要隐藏的账号藏起来的目的。如下图所示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

虽说这个方法有效的解决了管理员重启系统后无法在登录界面发现未知新增账户的情况,但依然无法保证进入系统后不被本地用户组信息所暴露。

此时,你需要一个更加有效的办法来弥补之前操作的弊病:创建影子系统账户。

在系统主界面中启动运行对话窗口,并输入“regedit”命令,激活注册表并展开到“hkey_loacl_machinesamsam”选项下。这里补充一句,你需要对系统进行配置后才能正常显示sam目录下的内容,否则它会显示为空信息栏。

经验分享:如何确保渗透测试Windows系统时不被管理员发现

通过鼠标右键查看administrator账号所对应的属性和“names”子选项属性,“administrator”里包含的内容就有关于该账户的权限属性。开启administrator,从窗口右侧找到其属性双击“F”属性值并复制里面的16进制值。如下图所示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

经验分享:如何确保渗透测试Windows系统时不被管理员发现

再采用同样的方法打开hacker$的“F”值,用刚才administrator的“F”值来替换掉当前hacker$的“F”值,再将hacker$账户对应的users和names(Ox3ea键值)注册表信息导出。如下图所示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

重新回到计算机管理->本地用户和组,将hacker$账户信息进行删除。如下图所示:

经验分享:如何确保渗透测试Windows系统时不被管理员发现

当系统内账户删除后,我们要做的事情就是重新恢复它。别问我为什么,因为它没有了,你如何实现在当前目标系统中潜藏侦查使用的账户信息呢。

回到系统主界面,双击此前复制出来的注册表并重新激活写入到系统当中去。

经验分享:如何确保渗透测试Windows系统时不被管理员发现

不过不要着急,先让我们测试下是否合格。

通过远程服务器登录到被攻击目标系统中去,你可以看到hacker$用户名依旧存在,而且是需要通过正常登录才能使用的。在测试下命令界面中会怎样,结果发现在net user命令和计算机管理下的本地用户目录中依旧无法找到影子用户相关信息,至此说明我们的操作成功了。

好啦,今天的分享就到这里,有好方法的朋友记得分享,不要独自享受胜利果实哦。当然,喜欢我内容的朋友如果想私下交流,也可以将信息发送到我的私人邮箱:1291016014@qq.com,大家相互学习共同进步。

*本文作者:2cat,转载请注明FreeBuf.COM

未经允许不得转载:安全路透社 » 经验分享:如何确保渗透测试Windows系统时不被管理员发现

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册