破解NASL脚本
在最近的一次测试中,我第一次看到了Nessus插件“Microsoft Windows SMB Registry: Autologon Enabled”。该插件从注册表中读取自动登录凭据并报告它们[1]。这在测试开始时是一个很好的发现,唯一的问题是Nessus有一个策略,即混淆它发现的任何非默认密码,因此报告如下所示:
我尝试了各种手动恢复凭据的方法,但由于某种原因每次尝试都失败了,所以我决定回到Nessus,破解NASL脚本并移除混淆。
据我所知,无法从Nessus内部获取NASL文件名,因此您必须通过在插件目录中搜索来找到相应的文件,在Linux上通常是/opt/nessus/lib/nessus/plugins。最好的搜索方式是使用插件ID,在这种情况下是10412,因为它是由脚本通过script_id函数注册的:
|
|
顺便说一下,我过去遇到的一个问题是bash通配[2]对插件目录中的文件数量不满意,所以如果您在尝试这样搜索时遇到错误,可以这样做作为替代:
|
|
这找到了文件smb_reg_autologon.nasl,我可能通过查看文件名就能猜到,但这样找到它更可靠。
我最初的假设是我可以编辑文件,更改非常简单:
|
|
我这样做了并重新运行扫描,但仍然得到了相同的混淆结果。接下来我尝试重新启动Nessus,这也没有起作用。
在与一些朋友交谈后,发现Nessus在使用插件之前会将它们编译为字节码[3]。为了让我的修改脚本生效,我被告知需要通过编辑nessusd配置文件来禁用签名检查。我能找到的所有文档都说要编辑/opt/nessus/etc/nessus/nessusd.conf,但我的机器上没有这个文件,我有的是/opt/nessus/etc/nessus/nessusd.conf.imported,所以我编辑了那个。您需要更改的设置是这个:
|
|
显然,将其设置为yes。
然后使用以下命令重新编译脚本:
|
|
之后我重新运行扫描并获得了我的凭据:
如您所见,更改非常简单,并且让我获得了凭据,而无需浪费时间尝试找出为什么无法手动从注册表中提取凭据。这个过程适用于任何混淆密码或其他数据的脚本,您只需要找到脚本,进行更改,然后重新编译。
[1] 有关更多信息,请参阅此TechNet文章https://technet.microsoft.com/en-gb/library/cc939702.aspx。(继续)
[2] 在人们发邮件告诉我他们的shell中通配有多好之前,我不在乎,我使用bash并且没有切换的打算。而且Vim很棒!(继续)
[3] 这就是为什么在更新后启动Nessus时,有时会看到一个非常慢的进度条,它正在编译所有新获取的脚本。(继续)