推销您的手段,或进行黑客审核

与往常一样,没有名称,并且由于我还与一个不公开签名相关联,因此它的历史记录也略有更改(并省略了一些未经我许可而未发表的细节)。
以下是某位员工正在使用计算机的真实故事...好吧,比方说一些私人银行。 您卑微的仆人讲述的事件发生在不久前的某个欧洲国家,甚至在DSGVO(GDPR,RGPD)之前,但在成为所谓的“ DSGVO”的过程中。


实际上,这一切都始于安全审核-...,采访,在万事俱备的放大镜下寻找,寻找和找出潜在的漏洞和瓶颈(从那里到那里),...以及实际上是在汇报。 最终,客户对他得出了令人失望的结论-“ C级拉伸”。


让我们忽略这样的话:IT安全人员在他们眼前就脸红了,但总的抒情信息是我抛出了毫无根据的指控,他们把一切都锁了,而CSO钥匙在我心底的口袋里。


试图说明该安全系统是围绕防火墙+代理+ Webwasher(如内容过滤器和防病毒软件)构建的,没有任何配置很差的混合IDS(HIDS + APIDS),honepot等。 等等,首先,从定义上讲,它并不安全,其次,实际上,我已经展示了至少不经常出现这种情况的几个地方。 试图恢复建设性对话(实际上是回到分析)的企图被整个部门所建立的三层仇恨墙所粉碎。


为了缩减会议规模并释放员工, CSO与两位重要的老板一起试图从我身上诚实地找出狗翻滚和理解的地方 如何进一步生活 事实上,根据我的拙见,到底需要做些什么。


因为 将来也没有看到任何了解,我满怀热情地提出了一个在实践中展示的建议。 在解释了目前无法解决问题,解决手续(签署更多文件等)之后,我同意了。


我真的不喜欢我“盲目地”工作(这是一件繁琐,漫长而又昂贵的事情,而进行渗透测试是运气的问题),并请提供一些其他信息(例如,一些员工的个人数据,例如开发人员和安全人员) ),我也没有遇到相反的认识。


你是不是黑客?! (实际上,不,我是开发人员,否则,它更多是一种爱好)。


我不会长时间讨论下去-一如既往,我深信金钱和时间的因素(即实际上是相同的金钱)。


即 结果,我们对公司的防御结构有了一些了解(通过初步审核获得),并且拥有全名和4名管理员和3名开发人员的简短履历。


为何管理员和开发人员适当?毕竟,人们可能会要求“女会计师”,向他们发送某种“猫”,并附带一些安全性较差的动物(或在社会工程领域进行类似的尝试) 。 但是...
但是,通常,很多公司在PoC演示上开始谈论它时就不太喜欢它。 至少不欢迎基于社会工程领域的阴谋的“黑客系统”,无论它的构建多么出色。


回到技术专家,他们首先是“社交”(这并不意味着他们会发射某种“猫”,但事实本身很重要),其次,他们通常拥有更“功能发达”的计算机(您将不会见面)。 而且,更有趣的是,与同一个会计师女孩不同,她们经常拥有某种“特权”,也就是说, 它们可以在安全性和系统限制方面(例如策略和协同操作)受到较少的侵犯,或者(例如,以某种方式运行新编译的exe-shnik是必要的)和/或它们可以爬过由安全卫士建造的“隔离墙”(例如,通过强制使用隧道通过代理)等 等


同样,同时使用计算机程序员或管理员来爬网保护,听起来完全不同于例如“强制”运行会计师木马。


即 最初收到的任务已经完成-我们走吧...


第一步是收集有关“客户”的信息-谁,什么,何时何地。


在这里,我不会很分散注意力,这篇文章并不完全是关于这一点的,所以我只想说-我选择了一个社交风尚的人,与Facebook和公司合作,包括他自己的youtube频道(YouTube,Vasya!),几个开源项目(在该小组和并拥有),只是一项巨大的贡献活动 (询问,但他通常在主要地方工作)


今天找到hoo-hoo通常根本不是问题(在某个我有昵称的地方使用我的真实姓名,在某个地方我从公司那里获得了代理IP地址并形成图片的地方),但是没有人真正隐藏它。


我被迫放慢脚步,包括 我的天赋 此外,我们的英雄在一个社区中或多或少地使用IRC客户端,在聊天中提供了积极的支持,IRC客户端是IP的补充,在用户信息中还提供了IP客户端。错误/漏洞,默认情况下它被插件包裹了多少。


好吧,像往常一样,一个晚上, 家里睡着了,盒子里有渣,我们又输了:) 在聊天中,我找到了一个活跃用户的昵称,该用户的连接时间超过12小时(通过日志记录进行中间断开/重新连接,因为公司代理就是这样,但自首次连接以来已超过半天),它来自我需要的IP地址即 登录格式为max.mustermann@proxyext.our-company.example.com


也就是说,要么我们的客户有一天-24小时或更长时间(因为自从他的最后一条消息以来已经过去了2个小时),他只是没有关闭工作计算机并保持IRC客户端处于活动状态。


或者也许他让计算机进入睡眠状态,但是(同样,安全性或管理员错误)碰巧后者会唤醒自己,例如更新Windows的更新(并在4小时的暂停后重新启动)或只是愚蠢地捕捉到局域网唤醒信号。 。


尽管如此,我还是有时间拍打计算机,或者说是我们“受害者”的IRC客户端。


在具有ida,ollydbg等功能的IRC客户端的该特定版本(当时偶然相关)中找不到单个已知漏洞。 然后看了一眼源代码(安静恐怖,Vasya!),他开始寻找某种漏洞,该漏洞将使他至少可以在其中执行某些操作,并着眼于至少远程控制IRC客户端(我们还记得这些插件)。


它被发现,甚至相对较快!


拦截控件后,就会在过滤不良的外部输入(与编码注入结合) %s内部以%s从堆栈中对缓冲区进行不安全的sprintf调用(结合编码注入),从而可以在正确的位置将“利用代码加载程序”写入堆栈中(感谢客户的开发人员提供了代码,微软的低地堆栈和运气。


尽管折磨还是必须的-因为 我们有DEP,您不能直接从堆栈执行,需要在堆栈上编写“程序代码”的副本以执行,找到memcpyretmemcpy调用,以将其复制到正确的位置(重写较少使用的类),将多个过程的输出重定向到正确的位置,覆盖多个VTABLE值,以通过调用导致某些python代码作为插件的下一个虚拟方法来生成事件(并将此python代码更改为您自己的代码,例如从损坏的消息中加载程序,以收集现成的事件 ployt的工具包)。


哦,是的,您仍然必须构建一个插件(再次感谢客户端开发人员的这种慷慨功能),作为代理,动态更改消息(添加包装器以启动注入,破坏其编码,同时在正确的位置插入不完整的替代项,然后等),对注入消息的初始加载程序进行编码等。
另外,我还必须构建一个小的python脚本作为目标系统的新客户端插件,作为控制台仿真器(在标准输入中接收我的消息,并在私人消息中将stdout + stderr发送回我的昵称)。


他将所有这些都收集到膝盖上后,就启动了该IRC客户,以尝试自己成为受害者,即 查看完整形式的成品。


从应用程序的第二个启动版本的另一个会话中发送了我的插件,发送了几次私人消息注入,我很高兴看到通常的Python问候>>> (为了清楚起见,我将其插入仿真器中-python)。


满意的是大象(注意到被攻击的应用程序没有跌落),他看到了消息输出窗口中正在发生的事情-它充满了各种非ascii字符,其中最引人注目的是 序列号为90h(至少不经常发出警告,它甚至给您造成了黑客攻击),我认为我仍然必须重做引导程序以掩盖以下消息(突然它仍然可以工作并注意到)。


他检查了一下代码,然后他们在等待输出的NTS行,他决定不打扰,并且在加载零后愚蠢地重写了消息的第一个字节(希望消息会在稍后显示在屏幕上)。


重复整个过程,然后等待所需的>>>再次查看另一个窗口,发现聊天中没有多余的内容 (我仍然是一个天才) ,决定继续测试。
from glob import glob as ls; ls('*')的消息from glob import glob as ls; ls('*') from glob import glob as ls; ls('*') ,我很高兴地看到答案是应用程序文件夹中包含的文件夹和文件的列表。


没错,我在攻击客户端的窗口中看到的消息与发送给我的昵称相同。 发送给我后,我还必须在行的开头放置0字节(NTS)。


至此,在准备阶段结束后,他指出我们的实验朋友仍在聊天(没有消息,Vasya!),他已经为我们的候选人准备了一份攻击程序。


走吧...


注入消息消失了……几秒钟后(显然磁盘正在休眠或代理很笨),我再次看到了诱人的>>>
当我在房间里跳来跳去时,我仍然不会告诉(这种奇观不是为了使人胆怯,因为表现出喜悦的不受控制的过程,我仍然把我的小脚踩在椅子腿上)。


痛苦地绞尽脑汁,立即想到:“如果在他的后坐窗口中看不到什么东西,突然我在某个地方搞砸了,结果应用程序崩溃了,”我想起了更新后可能会被强制重启(如果突然我从电脑中醒来,并且已经滚动更新了),我冒着冷汗(看着肿胀的小指,移开颤抖的手),加速了。


第一步是检查以防万一我们在那里。


 >>> import os; os.environ['userdomain'] 

答案是:


 'OUR-COMPANY' >>> 

好吧,一切都松开了手...走吧。


在用一个小的脚本检查了登录锁定后,稍微放松了一下,我决定看一下计算机上的可用内容:


 >>> from glob import glob as ls; ls(r'C:\Program Files\*') 

在答案中,不相信他的运气,在许多有趣的事情中,我看到了以下内容:


 [...,'C:\\Program Files\\TeamViewer',...] >>> 

即 无需做任何额外的手势-您无需下载任何内容,编译并寻找一个可以在不违反任何政策的情况下编写所有内容的文件夹。


然后同时飞行:


 >>> import subprocess; subprocess.call([r'C:\Program Files\TeamViewer\TeamViewer.exe']) 

好吧,在返回答案之后:


 0 >>> 

在等待TeamViewer通过代理并且服务器给它提供了一个ID(带有密码)之后,我在那里运行了一个脚本,寻找TeamViewer窗口,从中获取屏幕截图,并以base64行的形式发送回给我,在其中将其展开回位图,我很高兴找到连接的ID和密码。


...


第二天早上,一个惊讶的CSO给我打来电话,他首先收到我的来信(但不知何故来自他雇员的内部Exchange帐户),然后又由同一位雇员打了个惊恐的电话,说“厨师,我们丢了它-他们打碎了我们”,这发现了早晨一个打开的窗口日期,签名,在“两个,为了您的安全。您被黑了!”中带有大文本的单词。


在那之后,与保安人员的交流已经更加富有成果,没有唾液喷洒,衬衫撕裂和尖叫声。 受痛苦经历的启发( 例如,如本文所述 ),我尽了最大的努力来推迟后来的黑客攻击(因为起初我想收到汇票以支付新的“安全概念”),但是经过了很多劝说之后,暗示了长期合作的意味,等等。 n。以及承诺“不碰”那位责难员工(毕竟是同事),他们还必须列出几乎所有要点。


然后,我完全收到了经过商定的黑客入侵赏金(以及初步审核的费用),但后来办公室表现得很正常……比方说,我不喜欢运动。 为了继续演唱会,他们聘请了一家著名的知名审计公司,该公司基本上拒绝代表我与外部合作。


那么,正如他们在德国所说的那样,“ Man sieht sich immer zweimal im Leben”,意思是“一定再见面”。

Source: https://habr.com/ru/post/zh-CN416767/


All Articles