本文是「先进攻防社群」为粉丝们带来的防御规避机制解读的子妹进阶篇。防御规避机制解读(The Mechanics of Defense Evasion)
原文作者于 2018 年 11 月 7 日发布,作为 Peerlyst Red Team Book 的其中一个章节...“微乎微乎,至于无形;神乎神乎,至于无声,故能为敌之司命。” - 孙子兵法
恭喜你,“你进来了。” 所有繁琐的侦察准备工作都得到了回报,你已经成功访问了网络或系统。无论如何,对于攻击者来说成功实际上只是时间和是否坚持不懈的问题。毕竟,防守者几乎不可能完成每次都正确的任务,而攻击者只需好运气一次。拿到Shell只是开始,现在才是困难的部分。黑客如何在系统上不被发现并进行进一步的利用?这比看起来要困难得多。保持隐身至关重要,其主要目标是通过在系统上保持尽可能小的动静来避免被发现。规避是绕过信息安全设备(例如,防火墙或入侵检测/防御系统),以便在不被检测发现的情况下,向目标网络或系统投递利用、攻击或其他形式的恶意荷载。攻击者可以使用多种方法和工具来规避网络和系统级检测。本章讨论的概念并非详尽无遗的汇编,而是红队行动期间需要考虑的潜在起点。最好的做法是假设最坏的情况并抱有最好的希望,以便团队为任何可能发生的情况做好准备。也就是说,最好假设被入侵的系统环境是强对抗的,具有主动一次写入多次读取技术、且有远程备份的事件日志记录系统、有IDS 或 IPS、反病毒/恶意软件扫描以及熟练的网络安全管理员,尽管目标系统可能没有任何的这些东西,但它们仍在积极监视和寻找网络上的威胁。以这种方式思考迫使攻击者花费一切必要的手段来保持不被发现,并避免容易被追踪的草率错误行为。让我们看看攻击者可能用来利用系统并保持相对动静较小且肉眼无法察觉的一些方法。首先,想象一个没有后门存在,并且攻击者试图以隐身模式获得系统访问权限的场景。攻击者需要与防火墙对抗,可能还需要与 IDS 或 IPS 对抗。与大多数安全产品一样,IDS 解决方案并非没有漏洞。网络 IDS 或 NIDS 执行深度数据包分析,查找已知恶意软件签名数据库的模式和异常。规避IDS/IPS检测的一种方法是进行会话拼接,也称为通过防火墙和IDS将TCP数据包分割成不可能被发现的数据包协议,但在成功通过防火墙和IDS后可以重新组装。这样做迫使NIDS使用更多的计算机资源来试图重建这些片段,而它并不总是能够成功地执行这项任务。攻击者可能会尝试一系列安静(即信噪比)的攻击,只涉及数据包的碎片。或者攻击者可以用覆盖的方式将数据包碎片化。另一个选择是发起一个攻击,接着是许多虚假的攻击,然后完成最初的攻击,通过打散数据包串来迷惑IDS。稍微有点猥琐...有几个开源的数据包制作工具可以在Linux、Mac OSX和Windows操作系统中使用,如Scapy、Hping、SoCat、Nmap和Wireshark。作为一个五角大楼管理员和红队成员,找到适合你的工具,并学习每个工具所配备的特殊功能。建立你私有的工具包是由你自己决定的。每个黑客都有自己的偏好,以及可以用来识别他们的某些战术、技术和程序(TTP)。此外,并非所有的黑客工具都是一样的。就像有些工具在检测方面可能比其他工具动静更大一些。当你可以使用精确的手术刀时,为什么要使用大锤子?攻击者一旦获得系统访问权,有几种选择。他们可能会尝试某种类型的提权,也许使用用户账户控制(UAC)绕过技术,然后 "烧掉一切 "或擦除一切(即粗暴的大锤子)。然而,更隐蔽的选择是攻击者植入一个木马后门,悄悄地进入目标系统。也许目标系统会在以后产生更多有价值的情报或数据,而且它可能被证明是有价值的横向攻击平台,以混淆证据线索。Nmap是另一个重要的扫描工具,它允许攻击者使用-f(碎片数据包)命令进行碎片扫描;或者使用-MTU(最大传输单位)命令,通常默认为1500个八位数(8位字节)。如果攻击者想以低于默认的MTU大小(必须是8的倍数)来分割数据包,那么它可能会有更大的机会成功而不被发现,这取决于防火墙的配置方式。另一个选择是使用命令'send -eth'来绕过互联网协议(IP)层而发送原始以太网帧。Nmap和其他数据包制作工具的能力是有限的,这取决于用户试图执行什么。例如,运行Nmap的操作系统或Xmas扫描不支持分片,在系统上无法保持不被发现时会动静很大。TCP un-sync是攻击者可以用来绕过IDS/IPS的另一种方法,即注入含有错误TCP校验值的数据包。攻击者还可以注入一个假的 "FIN "数据包或一个无序的数据包编号,从而导致IDS "打嗝",并允许一个畸形的数据包通过主机目标(例如,网络或文件数据库服务器)。
低TTL(Time-To-Live)数据包值是指数据包在永远消失之前被允许保持活动的时间。绕过检测的一个选择是将数据包碎片与低TTL值相结合。这种方法试图欺骗IDS/IPS,使其允许一个以IDS后面的主机为目的地的数据包。在攻击者知道这些技术是否成功之前,会有一定量的校验值错误。虽然大多数红色团队永远不会考虑使用数字隐写术来进入目标系统,甚至不知道从哪里开始,但却无法忽视它是一种强大的技术,可以与其他类型的攻击相结合。数字隐写术是隐蔽性的极致,因为它对肉眼来说是不可见的。如果没有特殊的扫描软件工具,网络管理员将很难注意到隐写活动。恶意软件也可能被定制,以纳入数字隐写术,将数据包伪装成正常的网络流量。数字隐写术越来越多地被攻击者用来隐藏网络间谍恶意软件或任何类型的恶意软件,例如Microcin( SixLittleMonkeys APT组织的木马);NetTraveler;Zberp;Enfal(其新的加载器被称为Zero.T);Shamoon;KinS;ZeusVM;Triton(Fibbit);Narwhal Spider APT组织使用的和MS Excel电子表格Visual Basic脚本宏相关案例等等。使用数字隐写术将隐藏的恶意软件嵌入到其他载体文件类型中,这样的好处是不会引起怀疑,因为它将作为一个正常的图像、音频或视频文件下载出现。一旦隐藏文件被嵌入到载体文件中,它就被称为隐写文件,其隐藏文件内容也可以被加密。这对红队的活动有什么用?根据红队与客户商定的参与规则(ROE,Rules of Engagement),他们可能会考虑发送一个包含恶意软件(如后门木马)的加密文件(例如,启用宏的MS Word或Excel是几个选择)。这是一种可以与红队社会工程攻击相结合的技术,作为鱼叉式网络钓鱼或捕鲸(指攻击关键角色人物)电子邮件的附件。考虑到大多数企业高管在统计学上是男性,盲目的鱼叉式钓鱼或捕鲸邮件的最高成功概率是附加一个有吸引力的女性加密图像文件,该文件与钓鱼邮件的任何主题有关。一旦受害者双击该图像,感染就会在无形中发生。虚构的场景:在表明自己是来自[此处插入真实公司名称]的软件销售人员后,唐娜向目标受害人罗伯特解释说,她需要通过电子邮件向他发送一些产品文档和图片,以便他能够查看产品细节,并确定他的公司是否有兴趣购买唐娜之前在电话中描述的很棒的软件。当目标受害者罗伯特收到他从之前与唐娜的谈话内容所精心设计的诱饵邮件时,他打开邮件并开始查看软件产品文档,以及附带的特定用户模块的图形用户界面(GUI)的照片。当罗伯特点击打开其中一个图片文件时,该动作打开了图片,但也悄悄地触发了隐藏在图片文件中的恶意软件下载器,在后台进程中下载各种木马后门的有效载荷。现在,罗伯特的电脑已经感染了恶意软件,这可能导致攻击者获得管理员的访问权限。将数字隐写术作为一种先进的恶意软件检测规避技术,需要高级的技能水平。因此,采用隐写术来掩盖其存在的恶意软件通常是由熟练的恶意软件开发人员定制编写的。在暗网上有一些恶意软件开发工具,需要付费。但强烈建议红队不要使用这种软件,因为它通常是公认的恶意软件,而且是非法的。注意:如果被发现拥有或使用了恶意软件,一个人可能会被逮捕,并被指控犯有计算机欺诈和滥用法(CFAA,杀死天才黑客Aaron Swartz的美国网络安全法案)以及其他法律。这里建议的恶意软件类型仅用于红队的演习,并且只应包含良性的漏洞有效载荷,根据客户和红队商定的交战规则,不会造成任何实际的系统损害。DNS协议使用用User Datagram Protocol(UDP)运行,并将对外查询限制在255字节的字母数字字符及组合字符。事实上,DNS使用UDP操作,并且对外部查询有如此小的限制,这正是DNS是偷运数据进出网络的理想选择。没有人会怀疑,而且DNSSEC可能没有启用或没有完全防御DNS隧道。使用Linux终端测试确定一个域是否开启DNSSEC由于数据可以被秘密地嵌入到DNS协议包中,DNS隧道可以被认为是一种不太知名(题外话,作者写文章时这个技术不知名= =!)的数字隐写术。Kronos是希腊的时间之神,当然,Linux将其用于安排定时自动行动的命令功能命名为 "crontab"。攻击者可以使用 "crontab "命令来远程调度被攻破的系统上定期发生的秘密行动。例如,攻击者可能希望每周使用隐藏的DNS隧道将添加到系统中的新文件名列表发回给C&C服务器。要查看当前是否有任何crontab事件存在,请在以下目录中查找:/var/spool/cron/crontabs在404 Not Found错误中使用特定字符排序的PHP Webshell如果目标没有使用WAF,那么PHP Webshell可能是攻击者的一个选择。PHP是一种开源的服务器端脚本编程语言,因其与超文本标记语言(HTML)和Javascript一起用于动态网页和网络应用而广受欢迎。超过82%的网站使用某种版本的PHP。使用PHP Webshell,攻击者可以重新排列字符,将后门嵌入网站或网络应用程序的代码中。注意到在示例图片(上面)中,第1行通过将括号内的值设置为 "0",关闭了任何错误报告。第3行是发生命令字母重排的地方,即顺序错误的 "ps_ot"。第4行指示它重新排列字母以拼出"_POST"。该代码的第5-12行指示程序验证HTTP请求是使用POST方法和 "eval "命令来运行 "lequ"参数的恶意软件代码,而攻击者从未输入过 明文的"POST "命令并触发事件警报。这种字符重排技术也适用于$_POST、$_REQUEST、$_FILES和$_COOKIE超全局数组。(题外话:作者的Webshell技术和国人比起来有些弱,不过意识不错 = =!)其他的PHP Webshell规避技术涉及字符串操作的函数,如:- str_replace:在一串字符串中用其他字符串替换特定的字符串
- str_rot13:将每个字母在英文字母表中执行ROT13 编码
混淆对不同的人意味着不同的事情,这取决于它的使用环境。在黑客领域,规避和混淆是相互关联的。一般来说,混淆被定义为一旦规避失败或不再是一种选择,就会使某些东西难以理解或追溯到其来源。正如人们所想象的那样,有几种方法可以进行混淆,这只受限于想象力和技术限制。混淆的部分原因是,准确地将网络攻击归因于特定的威胁行为者或APT组织,往往被说成是一种猜测游戏。例如,一个熟练的攻击者很可能知道如何掩盖他们的踪迹,也知道渗透位于另一个国家或地区的系统,然后作为跳板攻击位于完全不同的国家或地区的另一个系统,这样做的好处是使攻击看起来像是来自某个地方。这是一种混淆视听的形式,这也是为什么情报机构和网络安全公司不能太快地指出攻击是哪个国家的责任,尽管它可能看起来如此明显。例如,如果以色列想让人觉得伊朗黑客入侵了沙特阿拉伯的关键基础设施系统,并关闭了他们所有的电力,从而引发战争或报复,他们可以入侵伊朗的系统,并从被入侵的伊朗计算机系统发起攻击。然后,沙特阿拉伯可能会得出结论,认为伊朗应对此负责,从而启动军事敌对行动作为报复。当国家主义的网络威胁者参与这些类型的网络战争或网络间谍活动时,反取证技术,如出现删除系统事件日志或以混淆取证调查行为时,应多一些思考,检查确定是否有任何日志的丢失。虽然这很诱人,但如果在成功访问一个系统后禁用系统事件日志或清除日志。这将是一个菜鸟的举动,可能是一个代价高昂的错误。禁用或删除事件日志将清楚地让任何网络安全管理员注意到,系统已经被破坏。更不用说,如果一个系统在网络上部署了IDS/IPS,或者配置Windows事件转发(WEF)提醒系统管理员此类活动,那么这种行为肯定会触发告警。对于红队测试人员来说,充分了解事件记录在各种类型的操作系统和数据库类型中的功能是很重要的。Windows不等于Linux,而Linux不等于Mac OS等等。攻击者可能将他们在特定系统上的间谍活动限制在特定的时间窗口内,比如4-8小时,然后只删除他们在系统内的事件日志。这对于一个负责数百甚至数千个系统的安全管理员来说,可能很难注意到。这也是为什么SIEM对大型组织的网络安全监控至关重要。然而,如果事件日志被配置为自动存储在云端或完全不同的云服务提供商(C-SP,Cloud-Service Provider )存储/备份解决方案的外部位置,那么修改或删除事件日志可能就很难了。在进行红队行动时,通常最好表现得像一个正常的用户,以避免被发现。想一想用户环境以及用户通常可能参与的业务活动类型。在系统上创建一个普通的用户账户是在雷达下低调行事的一种方法,可以访问文件,看看系统有什么。当执行需要提权操作时,尽可能在最低级别执行操作,然后以root身份登录,有选择地删除事件日志(如果可能)。当处于 "上帝模式 "的root级别时,保持最小的行动,以减少系统内的 "噪音",防止被引起注意。为了混淆与事件日志相关的元数据,可以使用TimeStomp这样的工具。
文章来源: http://mp.weixin.qq.com/s?__biz=MzI1MDA1MjcxMw==&mid=2649907391&idx=2&sn=1dab69eddddb326a663ed7aa12c943c0&chksm=f18ee9b9c6f960afa2a266f1c74de024fe9056765065e2bf2d6b54c7169c042d23636aaf3616&scene=18&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh