破解NASL脚本:绕过Nessus密码混淆获取Windows自动登录凭据

本文详细介绍了如何通过修改Nessus的NASL脚本绕过密码混淆机制,直接获取Windows系统自动登录凭据的具体操作步骤,包括定位脚本文件、修改代码、重新编译等关键技术细节。

破解NASL脚本

在最近的一次测试中,我第一次看到了Nessus插件“Microsoft Windows SMB Registry: Autologon Enabled”。该插件从注册表中读取自动登录凭据并报告它们[1]。这在测试开始时是一个很好的发现,唯一的问题是Nessus有一个策略,即混淆它发现的任何非默认密码,因此报告如下所示:

我尝试了各种手动恢复凭据的方法,但由于某种原因每次尝试都失败了,所以我决定回到Nessus,破解NASL脚本并移除混淆。

据我所知,无法从Nessus内部获取NASL文件名,因此您必须通过在插件目录中搜索来找到相应的文件,在Linux上通常是/opt/nessus/lib/nessus/plugins。最好的搜索方式是使用插件ID,在这种情况下是10412,因为它是由脚本通过script_id函数注册的:

1
2
$ grep "script_id(10412)" *
smb_reg_autologon.nasl: script_id(10412);

顺便说一下,我过去遇到的一个问题是bash通配[2]对插件目录中的文件数量不满意,所以如果您在尝试这样搜索时遇到错误,可以这样做作为替代:

1
$ find . -type f -exec grep -H "script_id(10412)" '{}' \;

这找到了文件smb_reg_autologon.nasl,我可能通过查看文件名就能猜到,但这样找到它更可靠。

我最初的假设是我可以编辑文件,更改非常简单:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
--- smb_reg_autologon.nasl      2016-03-10 23:25:09.250376471 +0000
+++ /tmp/smb_reg_autologon.nasl 2016-03-18 20:57:40.059226761 +0000
@@ -82,7 +82,7 @@
           + crap(data:"*", 6)
           + substr(password[1], (strlen(password[1])-1));
   rep = 'Autologon is enabled on this host.\n' +
-        "This allows an attacker to access it as " + username[1] + "/" + cleaned +
+        "This allows an attacker to access it as " + username[1] + "/" + password[1] +
         '\n\nNote: The password displayed has been partially obfuscated.';
 
   security_hole(port:port, extra:rep);

我这样做了并重新运行扫描,但仍然得到了相同的混淆结果。接下来我尝试重新启动Nessus,这也没有起作用。

在与一些朋友交谈后,发现Nessus在使用插件之前会将它们编译为字节码[3]。为了让我的修改脚本生效,我被告知需要通过编辑nessusd配置文件来禁用签名检查。我能找到的所有文档都说要编辑/opt/nessus/etc/nessus/nessusd.conf,但我的机器上没有这个文件,我有的是/opt/nessus/etc/nessus/nessusd.conf.imported,所以我编辑了那个。您需要更改的设置是这个:

1
2
# Should consider all the NASL scripts as being signed ? (unsafe if set to 'yes')
nasl_no_signature_check = no

显然,将其设置为yes。

然后使用以下命令重新编译脚本:

1
nessusd -r

之后我重新运行扫描并获得了我的凭据:

如您所见,更改非常简单,并且让我获得了凭据,而无需浪费时间尝试找出为什么无法手动从注册表中提取凭据。这个过程适用于任何混淆密码或其他数据的脚本,您只需要找到脚本,进行更改,然后重新编译。

[1] 有关更多信息,请参阅此TechNet文章https://technet.microsoft.com/en-gb/library/cc939702.aspx。(继续)

[2] 在人们发邮件告诉我他们的shell中通配有多好之前,我不在乎,我使用bash并且没有切换的打算。而且Vim很棒!(继续)

[3] 这就是为什么在更新后启动Nessus时,有时会看到一个非常慢的进度条,它正在编译所有新获取的脚本。(继续)

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计