前几天发现自己的VPS服务器莫名其妙遭受一些漏洞利用的扫描事件,然后就抓个包看一下到底是个什么情况。抓到的数据包如下就是一些ThinkPHP5的远程命令执行漏洞,本来也很正常这种事情但是注意到这个payload有点意思,就花点心思瞧瞧遂有此文。不明之处,希望各位大表哥答疑解惑。

一、分析思路

漏洞的原理分析就不多再赘述比较好奇的是这个http://107.148.223.222/php/1/editor.txt网页访问后确认就是一个wesbehll后门。

该IP的归属地在米国加州,提示为IDC服务器的主机,社区用户标记为可疑。

本来想通过威胁情报能够关联到更多的信息,目前也只是4-2收录了一个editor.txt这个样本,未能发现更多的信息。而且该txt也被标记成了安全、无论怎么看这个脚本也不安全才对呀,于是准备换个思路再深入看看。

干脆就访问一下这个网站的根目录一探究竟。网站看起来是十八般武器样样都有,大马小马一句话、冰蝎lcx图片马。唯一的问题是,这些马都是txt格式不是常规的php、jsp、aspx一类的脚本格式。黑帽子们主要还是想通过一些RCE在网页上通过file_get_content一类的函数远程写入。我想这些黑帽子的目的并不是为了拿到这个站的权限,本质上完全可以通过RCE继续渗透内容扩大战果,他们的真实目的应该还有其它。

既然是这样,就先下载下来用D盾检验一下免杀效果。24个只检出了10个居然还有一个级别为1的,其他的应该就是有绕过姿势的或者有其他什么目的。

意外发现这个easy.txt其实是一个PE文件,而且还是有数字签名的PE文件实际为Easy file Locker。利用该工具可以实现对文件和文件夹的属性进行修改实现隐藏的目的。

lcx.txt也是一个PE文件,主要实现端口转发的功能可以满足把肉鸡A上的3389端口转发到B机上的需求,但是这个一般的杀软会直接识别并隔离还是比较常见。

翻来翻去,还是发现这里居然还有好几个php的免杀马,于是准备对这个样本进行深入的分析一下。该脚本通过构建一个Globe的类里面的析构函数,实现了一个命令执行的功能。如371行的代码可见,有经验的小伙伴应该都懂得不多扯淡,这个是一个已知的后门文件。

其他function的功能通过命名方式,多少可以确认一些主要目的不再多赘述,代码即注释啊。感兴趣的是这个var变量里面有一个URL地址,由于对这个比较感兴趣就多关注了一些。如代码69行、143行、371行的使用来看。主要是读取受害者主机的IP地址、依次生成CRC32的校验、abs之后生成的var应该是保留在3位数以内的一个数值。如果IP地址为255.255.255.255那么生成的var数值为475;如果IP地址为200.200.1.123 生成的var数组则为179。仔细想来除了在计算机网络里面接触过这个crc,今天还是第二次接触到这个冗余校验码,多数还是sha系列、md5、RSA、R**之类的多一些。玩的这么复杂和高端,不知道到底是要干嘛?那么生成的访问域名则为

http://475.p.oubao3389.tech:1942

http://179.p.oubao3389.tech:1942

继续访问后的网址上依旧存放了一些经过特殊编码的base64的代码

经过解码后的内容看来,大约有120+行的代码量应该是一个网站的恶意SEO的代码模块。大概读了一下代码,功能还是有点多。看到这个关键字,轮链问一下度娘感觉仿佛打开了新世界,感兴趣的小伙伴可以自行了解一下。

然后突然又一想,如果这个var的数值不是三位数又会怎么样?报着这种心态,然后继续再访问一波http://66666.p.oubao3389.tech:1942居然返回了一个特殊的网站路径。

打开网址后是一个娱乐网站、在其他脚本里面还包含了另外的一些网址访问之后的内容基本保持一致,看起来这个才是最后的目的。最开始的那个工具包就是想通过web系统的RCE漏洞植入存放在恶意服务器上的广告SEO脚本。

二、碎碎念

其他信息感觉倒也没有什么值得深入分析的必要,但是到了这里倒是引发了另外一种的思考。目前各个安全厂商的安全设备,在针对webshell上传的识别能力应该还是不错的,常见的做法都是通过截取上传的文件内容进行文本识别,本质上和D盾的思路应该是一样的,简单点或许简单的字符规则、文本规则也有,高端一点可以用到语义识别和自然语言处理,虽然各有优劣但是相关解决方案还是比较成熟的。

这个场景的识别一般是建立在 外网到内网的上传,相关的内网应该是在HTTP头数据包里面的Request Body这个部分,方法也多数是POST类型。

那如何是webshell的主动下载呢?那么方向就是主动从内网到外网的发起的请求,多数也是get请求,脚本代码是在response body的部分,那么在很多场景说不定是一个突破的好思路。

三、总结

总体来看这个应该是一些利用常见的一些Web RCE漏洞来进行网站SEO达到牟利的一个团伙,从过程中利用的工具和攻击手法来看有条不紊可以用精细进行描述,由于利用的都是一些已知漏洞还是容易被察觉。由于之前跟进的比较多都是一些热点的病毒勒索和定向攻击场景,在黑链这个场景下的经验还比较缺乏,总感觉发现的还只是冰山一角。

*本文作者:si1ence,转载请注明来自FreeBuf.COM

0×00 背景 

未知攻焉知防,警察想要抓小偷,就该先摸透小偷的想法,才能更快捷的抓到小偷毕竟小偷抓小偷更容易。网络安全的攻与防,好比“矛”与“盾”,要想不被“矛”轻易刺穿,不仅需要了解“矛”的作战方式,同时也要不断强化“盾”的防御能力。谨以此文讨论一下在红蓝对抗场景下几个关键的技术点的二三事。

0×01暴露面  

大多数定向攻击场景里攻击者都会针对受害者目标进行大量的信息收集,比较常用的方式比如通过网络空间搜索引擎与各个互联网技术论坛、开源站点等获取到尽可能多的目标信息、包括不局限于一些开源的应用、服务器开发的特殊端口、常用的用户名格式、密码、网络拓扑、内网网段、建站框架、数据库类型、中间件版本、甚至是一些泄漏的VPN帐号等。比如很多内部非技术类员工将一些VPN技术指南上传了百度网盘还共享给了其他人,里面包含了帐号、VPN接入IP或者默认密码等信息,被恶意攻击者获取到该信息可能会直接导致内网的被攻破。又或者是一个业务系统的开发人员,将自己的开源项目直接上传到了github后并没有修改里面数据库连接的配置文件,抑或是该项目存在一些命令执行、任意文件下载等问题被攻击者发现,也会造成极大的风险。

针对防守方本身而已,首先需要做到就是对当前的网络环境的安全状态有一个比较合理的评估,结合对攻防的理解识别出网络当中可能存在的风险,整理好当前的一些暴露面的信息。就算千叮咛万嘱咐的要提高员工的信息安全意识,当然这个也是老生常淡要想完全避免这些情况的发生也几乎不可能,想要彻底解决此类问题更是难上加难。更多的努力应该是在梳理好内网的资产后,结合当前的业务逻辑与网络拓扑分析出可能存在的入口点,识别风险与威胁针对性的做一些防护措施,加强访问控制、强制使用强密码、周期性的更换密码等方式都是一些合理且实用的方式。

0×02入口点边界 

攻击者的对象是一个点,防御的却是一个面。对于大多数攻击者来说渗透一个跨国大型的国有企业内网要比攻破一个小而精的金融互联网要容易一些,比较组织结构复杂、互联网资产更多容易出现更多的薄弱环节;主要的业务系统官方网站应用、CRM系统、业务系统往往有具备良好的安全防护,不同安全厂家的安全设备估计也是各种安排,常规攻击手法容易被拦截在大门之外。对于大型的集团类的公司下属的子公司、下属单位、冷门的业务系统系统、测试系统往往难度会降低不少,捏柿子还是软的好。但同时风险也有 有时候不容易连接到母公司核心内网可能就做了一些无用功。所以至于入口点的边界往往就不仅仅局限于当前网络的边界,这个网到底有多大也就只有业务人员自己知道了。

还有一些常见的入口点主要是一些网络设备的风险,比如VPN、堡垒机、边界路由器防火墙一类的,前几年就有过国外某安全厂商的防火墙存在漏洞的问题。漏洞当然还是少数,默认用户、默认密码之类的反而更加常见一些,特别是针对特定场景下面结合工号、用户名、密码、TOP500常用姓名的爆破尤为危险。

 Web系统的弱口令也是常见的入口点之一,对公网的web系统如果存在一些知名的RCE的话估计早就被各种挖矿、黑链、勒索给盯上了,但是特别一些非常规的弱密码的风险类型就很高了比如[email protected]、姓名+数字、以及结合特定公司场景、业务场景生成的弱口令的情况。通过登录用户上传webshell 获取读取敏感信息、注册用户信息甚至获取到系统shell的情况,可能会造成更大的风险。

0×03数据库资产 

数据库资产也是经常收到攻击者关注的方向之一,拿到了数据库的权限后除了获取到里面的数据信息之外也可以依次为跳板进行下一步的攻击。数据库表里面往往存储有相关的用户名、帐号等敏感信息而往往内网里面很多资产在口令认可都能与之有关联性。实在没有思路,也能针对部分用户实施针对性钓鱼、社工也是一种突破手法。目前依然还是有不少企业将自己的数据库映射到公网,还不设置相应的安全策略或者存在admin/123456  root/root一类的弱口令问题,基本上就是送分题一样的存在了。攻击者拿到一个高权限的mssql用户开启xp_cmdshell之后,一个突破口带来的就是内网漫游扩大战果了;大多数用户往往也不会更改数据的端口都是默认的1521、3306、1433等,攻击者拿出扫描器就扫描这些数据库端口正中下怀,改成一个特定的5位数的端口,常规业务也不会访问就算扫描也扫描全全端口也才能发现,无形之下增加了发现难度也同时缩短了发现攻击者的时间,一举二得岂不快哉。

本质上来说数据库资产应该是重点关注的对象之一,除了加强密码测试与安全测试之外,一个适合业务的访问限制往往就是最后一道防线。在攻击者通过其他方式获取到认证口令之下,依然由于源IP的原因无法登录认证查看到相应的数据,也不失为一种弃军保帅的做法。

0×04 横向移动 

在攻击者获取到内网的跳板机之后,下一步自然就是百尺竿头更进一步。尽可能的扩大战果。内网资产收集往往具备有很多的网络行为,常规的存活性扫描、端口扫描、SYN扫描、Banner扫描、甚至是C段 B段的扫描流量层面动静还是有点大的。在跳板机上收集信息动静会小不少本地查看一下ARP缓存、ifconfig看一下网关的地址等方式,虽然信息有限但是基本上不会被流量层面的安全设备发现。当然了扫描是有必要扫描的但是方法很多,动静小点的方法也很多,这里就不展开讨论。

有时候为了快速获取权限拿下更多的服务器,动静大点也无所谓了。内网里常见的漏洞利用比如MS17-010、MS08-067、RDP爆破、SMB暴力破解、数据库爆破、S2漏洞利用、weblogic RCE系列等方式都是不错的选择,由于甲方对内网安全重视度不够往往内网服务器、主机很多安全补丁都是没有打的,内部的web系统也疏于修复高危漏洞、弱口令问题、一个帐号多个登录的问题的情况是屡见不鲜,内网往往还有一些特殊的应用比如SVN、gitlab、zabbix、redis、企业wiki、OA系统等风险业务都可能是重大突破口。

通过mimikatz获取到跳板机的用户名密码之后,对多个主机进行登录抓住几个漏网之鱼也不是什么难事,说不定windows的账户还能登录linux服务器甚至多个服务器主机,如果能获取到一些堡垒机、虚拟化管理平台的主机就更方便。

0×05内网穿透

大多数服务器都在内网服务器或者DMZ区域,出口地址经过NAT转换后为公网提供服务,为了深一步的渗透内网和跨转网段探测 同时增加一定的隐蔽性 一个合适的内网传统就很有必要了。通过自建CS、MSF平台让受控主机反弹shell连接回来本本质上动静还是有点大,即使使用一定的隧道或者编码混淆、特殊协议传递的方法,因为服务器的外联本身也是一种比较异常的行为容易被内网流量层的安全设备发现,而且Client端容易被主机层面的杀软给识别,由于Client端里面包含CC端通信的IP、域名、端口等信息容易暴露目标甚至被溯源,同时CS、MSF等知名工具的具备一定的流量特征也会被识别。

使用一些常见的隧道提供商或者使用一些流量转发的平台就比较重要了,例如当前常用的ngrok、frp、nps等此类工具特征流量往往都是基于TCP协议之上的,具备一定的隐蔽性同时杀毒软件也不会将其定义为恶意软件。系统进程的利用也是较为不错的方法常见的如powershell、SSH流量转发等方法,上次更新的kali2的时候偶然间发现kali2都集成了nishang、Powersploit等框架。

无文件攻击的方法的确更隐蔽一些。倘若上传一个lcx一类的工具本地的杀软估计会立马报警,躺在了病毒隔离区里面。Linux场景下,SSH自带了此功能当然就更加隐蔽了基本上算是秋水了无痕,还有一些常见的隧道通信如HTTP、DNS、ICMP等都是不错的选择。

0×06钓鱼邮件 

钓鱼,钓大鱼,钓鲸。与其把重心放在突破层层防御体系上面,直接对人发起攻击也是事半功倍的方法。现在主流的钓鱼已经升级到钓鲸鱼,针对特定对象构建特定的邮件主题、 附件与文档正文,针对的对象比如一些管理人员、职能类的HR等场景,这些人的邮件地址往往也可以从招聘网站、社交平台获得,结合特定场景与受害者的心理状态构建一个特殊的诱饵文件,软件捆绑、Office CVE-2017-11882 CVE-2017-0199、Winrar CVE-2018-20250、office的混淆宏、伪造的PE文件、HTA、CHM、Link文件等多种方式,控制其电脑后植入远控木马,作为跳板进行内网。

0×07攻防对抗 

攻防对抗的场景下和传统的僵尸网络、木马、蠕虫病毒类的检测方法有相当大的差异性,主要表现在传统的恶意程序更多的趋向于自动化攻击,其攻击特点表现在比较固定利用的漏洞、EXP都相差无几且特征比较明显,而且特征比较明显没有刻意的隐藏自己的行为,通常通过威胁情报、攻击行为特征都能较好的识别,其风险等级都很高。攻防对抗的场景下的攻击手法,较多的利用了一些人的弱点一些弱口令、异常帐号登录、非法网络接入、敏感信息泄漏更多的是在一些行为上的特点,所以在识别恶意行为的时候更多的需要关注一些可疑的报警类型。基于单个报警的模式在场景下并不是很实用而往往防御人员在识别低风险的报警的时候并不一定能发现其中的一些线索,这个时候就比较考验防御人员在攻防场景下的造诣了。

在这种场景下构建一定的攻击场景,自动化的将一些低可疑的线索进行聚合进行梳理提升相关的报警级别来引起重视就是一种不错的方案。之前很多人讨论过关于AI算法模型的问题,本质上所谓AI也是将人的经验赋能给代码了而已,关键因素还是训练数据从那里获取之后的训练以及特征工程的相关细节,按照目前大多数的场景下面关键问题都还是在于特征工程和训练数据的选取层面上,还没有到达拼算法特性的优劣上面。

由于对抗场景下的很多行为也不是真正意义上的悄无声息,由于大多数攻击者对受害者网络里的业务逻辑并不是很熟悉,所以常常会出现很大层面的异常,这就埋下了被发现的隐患。被控制的跳板机、泄漏的VPN帐号、内网横向的目标方向等等都会呈现与平时业务逻辑不一样的地方,通过对业务逻辑的一个基线学习在真实的攻防场景下某敏感资产出现了一些非正常行为就是有很大的可能性被控制了,偏离基线的水平越大可疑性就越高。 

0×08 总结

于笔者鄙见,多线索的关联分析+基于行为的异常行为在识别高级攻击的场景下对比常规的单事件的报警与攻击行为匹配上会有更多的识别效果。安全对抗的表面是攻击技术与检测防御的技术演进,本质是人与人之间的投入、技术的博弈。之前有关注到部分文章提及到关于冰蝎、蚂剑基于流量层面的检测方案,仔细拜读后觉得局限性还是比较大在针对部分初级白帽子不修改配置的前提下兴许有检出,若是针对性的做一些更改和特殊的字符拼接难度也不大,估计就会识别成正常流量了吧。

安全对抗的道路任重道远,花里胡哨的姿势越来越多;文章最后说二句,做防御方真的压力好大一把辛酸泪,不但天天要膜拜各位渗透大佬的奇思妙想,抑或又是出了什么新漏洞新病毒,还得分析检测识别思路与解决方案 感觉最近头发也是越来越少了好惶恐,最好再说一句有意换工作的技术大佬,可私信本人。

*本文作者:si1ence,转载请注明来自FreeBuf.COM

0×0 背景

安全本质是人与人之间的对抗,攻防技术的更新迭代促进了行业的发展。虽然都是做在安全技术的研究,但是发现其实二个方向的工作思路上还是有较大的区别;防御者从多个维度针对某一类攻击手法进行全面剖析提出一个能够覆盖大多数攻击场景下面的方案。

攻击者往往在多次攻击测试之后,只需要有跳跃性思路能够利用一些出其不意的姿势从一些技术点上突破防御即可,攻防技术相辅相成,相互进步。笔者在机缘巧合下从一个web安全的安全服务小菜鸡入到了一个安全检测的坑也有好几年了,简单谈谈自己从事安全检测的一些思考和想法,有误的地方欢迎大家指出批评。

图片1.png

0×1 知识积累

对于很多甲方用户来讲做安全也就是采购一些安全产品或者购买一些安全服务,应该也有很多大型企业或者互联网、金融企业会选择自己搭建自己安全平台的建设,毕竟还是自己熟悉自己的业务。安全产品的也是完成从传统的防火墙到UTM、下一代防火墙的转变,近几年还提出了态势感知这种新类别的产品。

一个安全产品往往是凝聚了大量安全人员和开发人员的心血,有很多东西也是笔者之前做渗透时候没有接触到的。依稀记得之前利用Metasploit做MS08-067的漏洞利用的时候,只是简单的几个命令一敲,search、use、set payload、rhost、rport、lhost、lport最后一个终极大招exploit最后用力地的一回车,shell到手执行几个命令后带着微笑的去写渗透测试报告了。遇见域内服务器权限不够的时候,也就是一个MS14-068完事。

图片2.png

Sql注入遇见被拦截的时候,先试一下sqlmap自带的tamper或者自己学着从大牛那里看来的文章像模像样的写一下,最后执行一下whomai返回一个nt/system的时候内心也是充满成就感的,遇见被查杀的webshell就上github或者安全论坛跪求大佬给一个免杀马,实在不行就问一下客户能不能给开个白名单。

当时也是因为比较菜其实也没有认真去研究过这些漏洞产生的原因、以及过程中的流量特征或者被攻击端主机上的一些行为特征、也没有思考应该如何做痕迹清理和免杀,更没有考虑过如何去识别这些攻击行为和检出这些webshell。安全检测的思路却是在研究这些攻击行为的特征,无论是流量特征还是主机的行为特征,真正的去理解这些攻击手法产生的原因,一个MS17-010漏洞需要理解到具体的SMB协议里面的一些字段以及相关的含义,攻击利用的数据包长什么样子,返回数据包的字段有什么异常,和正常的区别在那里。

图片3.png

一个MS14-068的提权漏洞的研究也需要理解Kerberos的本身的工作机制,协议的理解是个繁琐的工作往往需要大量的时间,也逐渐理解KDC的认证流程了之后,也就知道所谓的银票、黄金票据到底是怎么回事,也开始理解为什么mimikatz被成为神器的原因。之前一直以为mimikatz就只是一个抓windows的工具而已,后面发现它也是域内渗透的一个神器。

图片4.png

做检测的确没有做渗透那么好玩相反工作还很枯燥,没有那种攻破某一个站点getshell后、从administrator到nt/system后,内网漫游拿到域控管理员服务器后的那种成就感,相反你设计的检测方案被绕过漏报的时候,就是妥妥的黑事件一枚了却也没有因此而感到沮丧,喜闻乐见后续可以继续在方案里面进行完善。

0×2 应急响应

做技术预研的时候经常会没有头绪有一种间歇性迷茫的感觉,安全人员还是需要很多技术、案例或者攻防知识的输入来了解当前的流行的攻击手法。应急响应就是一个最直接的方式,跟踪客户处的一些安全事件从流量、日志、业务的多个维度进行溯源分析黑客的行为。过程中还能收获不少的病毒样本、黑客工具、各种免杀马甚至是一些0day也说不定,更多的还是了解攻击手法,那些EXP是常用的、那些是常见的入口点、常见的内网穿透有那些姿势。

图片5.png

做好应急响应却也不是一件容易的事情,往往需要有一些windows、linux的使用技巧和一些安全知识,还包括一些常见的远控木马、病毒家族、日志分析能力、流量分析以及一些操作系统的安全知识。在无文件攻击没有出来之前,笔者一直都不知道windows还有Powershell这么个东西,也不知道还有那么多RAT工具和常见的飞客蠕虫、XORDDOS、Ranmit之类的病毒。对一些windows的攻击手法也需要一些涉猎和研究,比如最常见的进程注入啦、dll劫持、驱动病毒、Rootkit之类的,在处理客户问题的时候就发现真的是林林总总什么情况的都有。

图片6.png

还有一些常见的web漏洞经常就发现一些异常进程是apache、IIS、weblogic之类的进程拉起来的,需要熟悉一些常见的RCE漏洞、上传漏洞、未授权访问之类的。

图片7.png

通过接触真实的攻防事件作为输入源,才能更好的为检测工作提供思路和方法,也避免了闭门造车、思路也是天马行空的。

0×3 机器学习

现在诸多安全厂商都在提AI+安全的概念,一些AI的算法在安全检测上面还是有很大的应用空间。之前在分析飞客蠕虫的病毒时候第一次注意到DGA这种绕过威胁情报的方法,思考过针对于这种行为的检测方法。利用传统的检测方法,在特征识别结合一些行为分析来检测这种行为,检出率还是比较有限也需要消耗大量的分析成本。

图片8.png

这个时候在 AI的算法有大量的样本训练集之后,通过一些数据的处理和算法的选取上就比较有优势,在安全检测的很多其他点上也有很多的应用面,目前互联网上也有很多的介绍文章,github上也有很多开源项目,感兴趣的可以认真研读一下看代码毕竟比看文章更直观一些。当前常见的AI算法都已经集成在一些框架里面,比如开源的tensor flow应用起来门槛也不是太高,通过安全人员提取好相关的特征之后麻烦一点的也就是数据的预处理、算法选取和一些参数模型的优化上面。而最后决定一个方案优劣的主要因素,个人感觉还是在一些特征提取的工程上面,特征提取的准确度往往比算法模型更加重要一些。作为安全人员,还是需要了解一些常见的机器学习算法不然都不好给领导吹水,查阅饭后翻一翻说不定还有新发现,这里比较推荐周志华老师的西瓜书,堪称经典。

图片9.png 0×4 黑产牟利与APT

在应急响应的过程中经常会遇见一些黑产团伙流下的痕迹,由于热门虚拟货币的流行导致挖矿、勒索成为黑产主要的盈利方法。层出不穷的挖矿病毒,各种各种的勒索病毒攻击手法也是各种各样,抓到一些病毒样本的时候找到钱包地址在交易平台一查才发现人与人之间差距竟然如此明显,自己辛辛苦苦几十年还真的不如他们随便玩玩。

图片10.png

有时候也会思考通过抓取到的病毒样本和工具,然后修改一下钱包地址,自己也转行算了。毕竟是根正苗红的白帽子,每次也都是想想就算了,然后如孔乙己一般排出九文大钱告诉自己:君子爱财,取之有道。勒索病毒还是很直观判断的,毕竟全盘都被加密了,只要通过加密的提示文档和加密的后缀名确认一下相关的病毒家族即可毕竟想免费解密还是有点难的,挖矿病毒也容易发现了,打开进程任务管理器一下那些占用高的进程一个一个确认一遍总能发现点异常。不得不说黑产团伙们还是很努力勤奋的,各种漏洞都能利用一遍版本迭代更新的速度也快,很快就可以出了一个新的变种。

图片11.png 之前总觉得APT什么的只是存在一些安全报告当中,但是其实可能某一个应急响应处理客户问题的过程当中接触的病毒样本、某些隧道通信流量、某一种攻击行为的分析过程中其实就是一个APT组织留下的痕迹。通过对这些高级威胁的研究往往能够为安全检测提供更多的思路,比如一些常见的免杀技巧、绕过检测的方法、代码混淆的技术等等,总会让人感觉居然还能这么玩的惊奇。他山之石、可以攻玉,很多小技巧、漏洞的组合拳在特殊场景下面的作用还是很大的。

图片12.png

分享一个非常nice的github项目,里面包含了最近几年的各类APT的跟踪报告:

https://github.com/CyberMonitor/APT_CyberCriminal_Campagin_Collections

图片13.png

0×6总结

依稀记得13年有幸读到了古典老师的书谈论到关于兴趣的话题。兴趣是你以最高级(est)的形式投入到当下(ing)的事情之中(inter)去,让自己完全身在事物其中。当真正完全投入到当下的事情中去时,不管这个事情多么简单卑微,你都能感受到无穷的乐趣。

有时候换个工作岗位和工作方式,离开舒适圈拥抱另一个可能,尝试一些新的研究方向说不定还有超出预期的收获。

图片15.png

*本文原创作者:si1ence,本文属FreeBuf原创奖励计划,未经许可禁止转载

*本文作者:si1ence,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

0×0 背景

攻击溯源作为安全事故中事后响应的重要组成部分,通过对受害资产与内网流量进行分析一定程度上还原攻击者的攻击路径与攻击手法,有助于修复漏洞与风险避免二次事件的发生。攻击知识可转换成防御优势,如果能够做到积极主动且有预见性,就能更好地控制后果。

说人话:被黑了就要知道为什么被黑了怎么被黑的,不能这么不明不白。

0×1 主体思路

溯源的过程当中的时候除开相关的技术手段之外,首先还是需要确认一个整体的思路。对异常点进行一个整体的分析并根据实际环境给出几种可能的方案,这样处理起问题相对就可以游刃有余心里有谱,手上就不慌了。

常规出现的、容易被用户感知的异常点举例如下:

1.网页被篡改、被挂上了黑链、web文件丢失等

2.数据库被篡改、web系统运行异常影响可用性、web用户密码被篡改等

3.主机出现运行异常反应卡顿、文件被加密、主机系统出现其他用户等

4.主机流量层出现大量异常流量

根据用户现场的情况往往还需要做一些信息收集的工作比如,出现异常的时间点(非常重要)、异常服务器的主要业务情况、大致的一个网络拓扑是不是在DMZ区、是否可以公网访问、开放了那些端口、是否有打补丁、使用了怎么样的一个web技术、最近是否做过什么变更、有没有什么安全设备之类的。

根据收集到的信息,往往可以得出了几种可能。一个web服务器公网可以访问出现了被挂黑链的事件使用了s2框架,那么初步可以怀疑是s2-045 s2-046之类的命令执行漏洞了;如果一台公网服务器没有安装补丁又没有防火墙防护,administrator的密码为[email protected]那么有很大的可能性是被暴力破解成功;后面的工作主要就是收集各种资料证明这一猜想即可。

0×2 web系统

上次自己部署了一个web系统在VPS上面,后面看了一下access日志基本上每天都有好多的web系统扫描事件,路径探测的、EXP扫描的、文件遍历的什么都有筛选起来特别头疼。

一般web类的安全事件在web日志当中一般都能发现一些端倪,清除日志这种事情毕竟不是每个黑客都会干。

常见几个中间件的日志如下:

1.apache的日志路径一般配置在httpd.conf的目录下或者位于/var/log/http

2.IIS的日志默认在系统目录下的Logfiles下的目录当中

3.tomcat 一般位于tomcat安装目录下的一个logs文件夹下面

4.Nginx日志一般配置在nginx.conf或者vhost的conf文件中

日志一般以日期命名,方便后续审计与安全人员进行分析。

工欲善其事必先利其器,一般日志量都比较大。互联网上还是有很多的日志检测工具,个人不是很喜欢用主要工具还是notepad++ 和Sublime Text跟进收集的信息比如时间点这种情况,对时间点前后的请求日志进行分析,一般都都能发现一些异常。

为了方便的识别一些日志,github也有很多开源项目有专门去日志中找安全相关攻击的、或者是统计的。因为现在很多扫描器也比较多,一检查往往也会发现很多无效的攻击,筛选起来反而感觉更麻烦。

推荐一个小工具:web-log-parser为开源的分析web日志工具,采用python语言开发,具有灵活的日志格式配置。优秀的项目比较多,萝卜青菜各有所爱自己喜欢较好,实在不行就自己定义好规则搞一个。

连接如下:https://github.com/JeffXue/web-log-parser

在处理一些访问访问、网页更改的时候、上传路径、源IP之类的信息都能够较好的收集。通过对一些关键路径的识别,结合一定的信息往往都能定位到入口点。

常见的一些入口点举例如下:

1.一些CMS的EXP,比如Discuz Empire Spring 之类的一些命令执行、权限绕过逻辑漏洞等因为比较通用,网上很多都是公开的所以涉及面相对较广。

2.编辑器的上传漏洞,比如知名的FCK编辑器、UEditor之类。

3.功能性上传过滤不严格,比如头像上传资料上传界面一些过滤严格导致的上传漏洞。

4.Web系统的弱口令问题 admin账户、或者是tomcat的manager用户弱口令 、Axis2弱口令用户、Openfire弱口令等等

同时web系统往往容易存在一些webshell的情况,经常在一些上传目录里面找到一些webshell、明明是个JSP的网页还出现了一个php的一句话。一般需要重点关注一下。推荐用D盾对web系统的目录进行扫描。

扫描出来的webshell时间上传时间、文件创建时间、文件修改时间往往准确性都比较高,一般不会去更改这个时间,用来在日志当中排查就相对容易的多。

0×2 主机系统

以前一直觉得一些蠕虫病毒都挺逗的很多传播方法居然只是依靠暴力破解和MS17-010之类的漏洞传播,感觉波及面应该比较小后面才发现这个方法简单粗暴反而最有效。

对于Linux平台相对安全性偏高一些,常见的几个病毒如XorDDOS、DDG、XNote系列的普遍也是依靠暴力破解进行传播,溯源的过程中也重点考虑暴力破解。

常用的一些日志举例如下:

/var/log/auth.log 包含系统授权信息,包括用户登录和使用的权限机制等信息

/var/log/lastlog 记录登录的用户,可以使用命令lastlog查看

/var/log/secure 记录大多数应用输入的账号与密码,登录成功与否

/var/log/cron 记录crontab命令是否被正确的执行

grep,sed,sort,awk几个命令灵活运用、关注Accepted、Failed password 、invalid特殊关键字一般也能轻松发现一些端倪如下:

经常一些攻击者忘记清除日志,就很方便能查看详细了。一个history命令,黑客的操作就一目了然。

当然了一些脚本执行完了之后往往最后会清除日志比如下面这样的往往就加大了难度,日志被清除了往往就更显得异常了。可以重点看一下还剩下那些日志、或者关注一下网络层面是不是还有其他的安全设备可以在流量层进行溯源分析的。

源于Linux一切皆文件与开源的特性,在溯源的过程中也有好处也有坏处,rootkit就是最麻烦的一件事情了。由于系统一些常用的命令明文都已经被更改和替换,此系统已经变得完全不可信,在排查溯源的过程中往往不容易发觉对安全服务的人员就有较高的技术要求了。

Windows平台下面的溯源就相对容易一些当然主要还是依靠windows的日志一般用 eventvwr命令打开事件查看器。默认分为三类:l应用程序、安全、性统 以evt文件形式存储%systemroot%\system32\config目录:

合理使用筛选器往往可以帮助我们更好的排查日志,比如怀疑是暴力破解入侵的筛选事件ID == 4625审核失败的日志,后续通过对时间的排查、以及源IP地址、类型与请求的频率进行分析来判断是否是来源于内网的暴力破解。

通过系统内部的日志来判断是否是恶意进程的运行状态。

通过对logontype的数值确认就可以确认到底是通过什么协议进行暴力破解成功的。相对的数值关系如下:

local WINDOWS_RDP_INTERACTIVE = "2"

local WINDOWS_RDP_UNLOCK = "7"

local WINDOWS_RDP_REMOTEINTERACTIVE = "10"

local WINDOWS_SMB_NETWORK = "3"

如下图就是一个典型的SMB的认证失败情况:

Windows系统的补丁相对重要一些,一些关键的补丁没有打很容易遭受到攻击成功的事件。重点就关注一些常见的比如ms17-010 ms08-067 ms16-032等安全补丁都是内网渗透常用的攻击包。可以通过sysintemfo可以查看到当前系统当中已经安装的补丁。

此外windows下面还包括很多域控的安全日志,因为内容太多就不再展开叙述,溯源主要还是想还原攻击路径,通过windows日志搞明白访问关系攻击者的攻击链条,给用户一个交代就好。

0×3 其他常用系统

数据库系统也是攻击者入口点的一些重灾区,常见的比如msssql server由于数据往往在window环境下安装后具有较高的权限,一些用户经常安装完成之后也不会怎么去加固数据库,基于库站分离的原则很多mssql公网直接就可以访问访问控制策略比较弱,弱口令的问题尤为突出。

比如下对于mssql的sa用户暴力破解日志,里面也记录着客户端的IP地址如果没有配置相关的锁定策略在密码不够严格的情况下容易被攻陷。

攻击者爆破成功之后启动xp_shell往往就可以以高权限执行系统命令,拿到了一个windows的shell岂不是为所欲为。

Linux平台下面的redis也很热门,就一个几年的默认安装后的未授权访问的问题却流传的相对广泛。比如最近一段事件相对比较热门的DDG挖矿、WatchDog挖矿等病毒都主要利用redis未授权访问执行命令,从互联网拉取挖矿程序写入ssh的公钥等功能。

看见本地开放了6379端口的时候还是需要重点关注这个问题,多向用户咨询一下使用情况查看一下默认配置。

还有一些常用的系统比如mysql数据库暴力破解提权一套装、hadoop未授权访问漏洞、钓鱼邮件、破解软件后门、恶意的office宏、office的代码执行漏洞、邮箱缺陷、VPN配置缺陷等情况都可能是攻击者的入口点具体情况需要结合用户当前的情况具体进行排查。

0×4 总结

都说安全本质到最后就是人与人之间的一个较量,对于很多定向攻击的安全事件排查起来估计就比较有意思,主机端的日志被清除掉流量层面全程隧道通信就呵呵了。

站在攻防的角度从攻击者的思维模型去做应急,思考更多的攻击者可能的途径,经常利用的姿势、漏洞与常用的攻击手法再用数据去加以验证,不局限在已知漏洞中而放过其他的问题,如果能够做到积极主动且有预见性,就能更好地控制后果,说不过在过程中还能发现几个0day也算是意外之喜了。

*本文作者:si1ence,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

*本文原创作者:si1ence,本文属FreeBuf原创奖励计划,未经许可禁止转载

0×0 背景

最近各类安全事件还是很流行的,以前只是批量抓鸡做DDOS现在伴随着虚拟货币的流行挖矿勒索逐步进入了大众的视野,仅以此文按照精力财力人力最小化的原则分析一些恶意行为与相对应的此类安全事件一些防范措施。

安全标准是个好东西奈何现在客户安全意识并没有特别高,所以在具体落实实践的过程中难度太大,况且按照ISO27XXXX标准、等级X保、GD*R、或者GB*X的条例来说人力物力财力都是一个不小的挑战,毕竟那都是要花钱的。在业务部门看来安全就是来找麻烦的,最后标准落实了测评通过了最后又出了安全事件又会被抓住一阵狂怼。

图片1.png0×1 弱口令问题

首当其冲的还是先解决最严重的问题:弱口令。强弱密码的区分没有一个严格明确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或容易被破解工具破解的口令均可以定义为弱密码。

图片2.png目前大多数worm类病毒都具备暴力破解模块针对的常见服务如下:

SSH RDP MSSQL Mysql Redis SMB SMTP HTTP

此处定义弱口令非一些传统的类似与123456这类的弱口令主要举例如下:

A类常见的弱口令如:

12345678  1111111  admin  1234abcd   8888888

B类符合密码复杂度的弱口令如:

[email protected]  Aa12345678  [email protected]

C类用户名关系配合常见字符串类的如:

zhangsan123 zhangsan888 [email protected] zhangsan520

顺手写一个脚本短短几十行的代码量而已或者上github找一个弱口令生成器都可以生成大量C类弱口令:

图片3.png 解决建议:

统一整改一批弱口令同时设置一个强的面密码策略,设置一个若密码字段的检测针对不同的用户不运行类似C类密码的设置。 

0×2 统一或规律密码问题

 去年下半年的时候出现了一个比较流行的勒索病毒叫GlobeImposter3.0,该勒索往往可以导致内网很多主机同时被勒索。加密文件的后缀改成.动物名称+4444的样子,如:.Horse4444 12生肖凑齐的感觉有没有。

图片4.png

这货利用mimikatz.exe扫描本机的所有账户机器密码,将结果保存到result.txt里面加入到暴力破解的字典里面。之后利用nasp.exe扫描哪些机器开放3389端口。然后远程登录桌面爆破工具NLBrute.exe会根据扫描结果,依次爆破局域网的机器。拿到机器账号后,成功登陆进而重复该步骤,再次进行传播。

图片5.png针对很多内网主机密码都是一致的情况,估计分分钟就内网就歇菜了。比如还有一些运维管理员喜欢把密码和IP关联在一起。比如192.168.1.101 密码就设置为[email protected]随便一下8个字符、大小写数字字母、特殊字符都具备了却往往很危险。攻破一台主机,可能内网所有主机都玩完了。

解决建议:

强烈推荐开源的跳板机JumpServer可以自己做二次开发,梳理内网主机的访问关系图设置内网主机的访问控制策略  

0×3 系统补丁

每次谈到windows系统补丁就觉得有必要说一下Windows二个比较有代表性病毒Conficker与Wannacry系列二者都属于比较活跃且感染面相对较大的。

图片6.png前者主要利用了MS08-067后者主要利用MS17-010进行内外网的扩散,MS17-010涉及面相对较广广泛被挖矿勒索病毒用于横向传播,收获颇丰这个是真的猛。

图片7.png解决建议:

这个解决办法是真的简单就是打补丁,有条件的可以自己搭建一个WSUS用于补丁的分发、或者自己写一个小脚本用于检测主机端的补丁安装情况。针对与一些服务器不方便重启的情况建议可以做好ACL策略或者端口封禁。

0×4 热点安全漏洞利用

客户普遍都认为内网是相对安全的,连接外网的服务一般也会重点关注。目前较多的worm类挖矿病毒与时俱进常常有很多Web漏洞的利用模块。

如最近360捕获的Psminer 基本上覆盖了Weblogic类、Redis未授权访问、ES类、ThinkPHP命令执行类、Spring命令执行类。

图片8.png

除非之外还有一些常见的Tomcat Manager弱密码、S2命令执行系列、Wordpress命令执行漏洞都是一些可以用于传播的漏洞。这一些漏洞的特别就在于简单高效,不需要提权什么的直接就是一个curl或者wget从互联网下载一个恶意脚本回来开始搞事情,windows调用Powershell一个downloadsrting开始搞事情。

 无论是做为内网的突破口还是内网横向扩散使用,这一类高位漏洞都能发挥较好的效果。指不定很多刚刚入门的脚本小子练练手搞点EXP批量扫描,拿到了一个shell之后一个rm  -rf /* ,咱们后面又该怎么和领导去交代呢,估计第二天是不是都不用来上班了。

图片9.png解决建议:

这一类安全漏洞是危险性比较强的,说不定就是导致内网瘫痪的一个入口。定期的跟踪热点的安全事件、安全测试上github收集各类POC回来验证,参考自动化测试那一套玩意做到内部安全风险自己评估。Ummmm….还涉及到一个问题谁去修复的问题?当然是谁开发谁负责,开发不修复怎么办,谁去做回归测试等问题参考如下:

图片10.png0×5 安全意识与安全管理

安全意识这个属于老生长谈了无论说的怎么牛X感觉都是在自嗨,该点击的钓鱼邮件还是要点,说了很多遍不要安装来路不明的软件还是一样安装,不要打开来路不明的附件出于好奇看了看,弱密码一定会改的就从123456改成了12345678,最后发现电脑卡到不行CPU占用率90%,内存占用90%以上中了勒索挖矿就是安全工作没有做好。

每次遇见到这种情况,我也不知道怎么玩,除了本地装上EDR就不知道还能怎么玩了遇见免杀的Virus就呵呵了。

图片11.png所以这个时候有个人背锅就很重要了,按照XXXX标准结合自己的实际场景搞一些简单的安全管理制度,大家看不看没有关系一定把责任要划分到人头,最好还能走正式的那种制度文档,批准人为:XXX领导。大概就差不多了。

解决建议:

定期抽查部分PC的终端防护软件、多培训多洗脑,多出一些制度。

0×6 安全运营

根据一些law的要求需要将日志保存到至少半年,搞一个简单的日志中心就十分的有必要了,购买第三方厂商或者自己搞个开源的都可以主要看领导给不给预算。

开源的日志中心还是比较推荐,毕竟可以根据自己的业务场景自定义,比较推荐比较完善的ELK套装。现在新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具
图片12.pngElasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

 Filebeat隶属于Beats。目前Beats包含四种工具:

Packetbeat(搜集网络流量数据,溯源可能用得着)

Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据,检测挖矿神器)

Filebeat(搜集文件数据)

Winlogbeat(搜集 Windows 事件日志数据,检测暴力破解必备!!!) 

主要目的还是能够通过日志发现一些异常点,出了安全事件后方便溯源分析,根据对业务情况的熟悉可以自己写一些报警规则对于很多常规的暴力破解、异常登录都能做到准确的报警提醒。

0×7 总结

企业安全还是看资金投入只有领导愿意投入,预算管够直接就购买一些安全厂商的全家桶FW+IPS+IDS+WAF+SIEM+EDR+DLP+Scaner+Codereviewer+APTdetecter,剩下的就是一些运营工作了美滋滋毕竟是真金白银搞出来的。

最后吐槽一下热门的利用”驱动人生”升级通道的那个木马,各种不好查杀还经常变来变去已经被折磨的快吐血了,求大佬放过。

图片13.png*本文原创作者:si1ence,本文属FreeBuf原创奖励计划,未经许可禁止转载

*本文作者:si1ence,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

0×0 背景

前段时间自己买了台VPS学习一下如何使用liunx顺便部署了一个Cowrie蜜罐系统准备收集点弱密码和一些病毒文件分析一下,最近运营了一下蜜罐的效果感觉收获还是挺多的,最近恰好Pandazhengzheng也有空说要手把手教我走向逆向大佬之路。

0×1 蜜罐配置

Cowrie是一个具有中等交互的SSH蜜罐,安装在Linux中,它可以获取攻击者用于暴力破解的字典、输入的命令以及上传或下载的恶意文件,具体的介绍和部署方式度娘还是有不少,这里就不凑字数赘述了。

主要使用了Cowrie的默认配置本地监听了2222端口转发蜜罐的22端口的流量,本机的ssh已经修改为28726端口:

特地用nmap扫描了一下可以发现22端口是打开状态的:

这边主要设置了2个蜜罐的ssh户,root密码难一点用于获取更多的密码,admin简答一些用户关注登录成功后的行为,配置文件主要位于cowrie主目录下的/etc/userdb.txt:

然后大致看了一下cowrie.log的日志有6W+行的事件日志:

为了统计数据方便记录的数据,都统一存放到本地的mysql数据库,默认有以下几个数据表:

0×2 SSH暴力破解

系统记录了2个月前到现在的日志,累计被爆破了73032次,差不多一天1000多次。

统计了常见的Top20 的爆破的用户,主要还是admin、root:

统计了常见的Top20 的爆破的密码,主要还是password,123456这种:

统计了一下爆破次数最多的一些IP地址:

分别对第一和第二这2个IP进行威胁情报查询都能被识别出恶意IP:

0×3 恶意下载

查询input数据表记录了攻击登录后执行的命令,由于内容比较多这里只选取了部分关注一下:

简单的过了一下抽取3种比较典型案例简单的看了看分别是:

1.Linux.Lady

2.XorDDos

3.DDG挖矿套件

Linux Lady下载连接:http://45.61.136.193/mi3307 

病毒哈希:e25c7aa18ee7c622cbd38ac0d27828c245de0fc0ee08e06bb11ac94fbe841471

本来还拖进IDA看了一下,结果居然搞不出来,此刻再一次流下了没有技术的泪水。

威胁情报检出:

Linux XorDDos 下载连接:http://45.61.136.193/s443ls

病毒哈希:2409fb21fe377f7e12dda392f26d7c93b7715239169d362dd907fe499ab38ee9

详细分析报告如下:熊猫正正的XorDDos详细分析

Linux DDGMiner这个最近已经遇见好几起了还算比较热门就不多扯淡了。下载连接:http://104.248.181.42:8000/i.sh

这个主要是一个Downloader主要功能就3个一目了然的那种:

1.根据系统版本下载对于的DDG挖矿病毒样本

2.加入定时任务做持久化

3.排除异己干掉其他挖矿的程序

通过对这个104.248.181.42这个IP进行威胁情报分析可以发现这个上面能关联较多的病毒的样本主要都几种在2019年2月-3月份还比较新鲜,更新迭代的速度还是很快的很多连接都已经失效了。

0×4 总结

通过蜜罐这种主动防御技术记录攻击者的一些交互行为与命令,对于收集一些威胁情报与流行的攻击手法应对僵尸网络等方面还是具有积极的作用。Cowrie这种轻量级功能也是有限兴趣爱好者玩玩还好真搞大事情还是有点cover不住,T-Pot多蜜罐平台在企业实践的过程当中应该会更具有竞争力一些。

虽然是已知的,还是贴一下IOC:

http://45.61.136.193/mi3307

http://23.247.54.36/i3306m

http://45.61.136.193/isu80

http://45.61.136.193/s443ls

http://45.61.136.193/ys53a

http://23.247.54.36/ys808e

http://45.61.136.193/g3308l

http://104.248.181.42:8000/i.sh

IP:

104.236.156.211

206.189.94.170

218.206.107.34

*本文作者:si1ence,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

0×0 背景

由于最近一段时间里”驱动人生”这个病毒还挺热门,最近发现通过一些安全厂商的设备发现内网里面有大量的主机都中了这个病毒瞬间吓哭了。后续通过对主机进行检查,居然没有发现什么问题,后续发现是安全设备命中了一个威胁情报的IP,通过对IP的分析发现这还有这种操作。

0×1 过程

然后我登录上了安全设备去查看IP地址,安全设备提示为:120.52.51.13,作为安全小白通过各种收集定位到了freebuf的一篇文章结尾公布出来的IOC里面,同样的也有大佬在质疑这个IP是否真的有问题了。

然后这边直接访问这个IP返回如下界面,看起来是缺了某一个参数感觉也没有什么大问题,看起来也没有什么应用,就先借助于威胁情报查询一下了。

通过对该IP的查询,提示为联通的IDC机房使用位于河北廊坊,威胁情报提示为僵尸主机。

通过对微步在线的威胁情报进行查询提示未知。

再一次通过VT进行一下分析,这里面的内容就要丰富一些了,可以看到关联到了很多奇奇怪怪的URL和一些病毒样本,大多数时间点还是2019年2月到3月之间的信息。

在这些奇奇怪怪的URL当中可以还发现很多知名大公司的域名看着想是iqiyi的cdn,还是adobe的msp文件,看起来应该是的的确确的白域名才对。

在白域名的同时也发现了一些黑的域名比如a46.bluehero.in/download.exe。

该样本为蠕虫病毒bulehero详细分析结果可以参考:https://s.tencent.com/research/report/514.html

0×3 测试

仔细看了这些url发现有个特点跟在这个域名后的根目录的,都是网页路径于是大胆的猜想这个应该是实现了一个基础的跳转功能,原理应该类似URL的Redirect这种操作。

大概的原理可能是这样至于为什么要这样玩,猜测原因可能如下:

1. 绕过一些威胁情报的检测

2. CDN的一些多节点加速下载访问之类的优化

3. 流量代理或者劫持之类的

鉴于很多知名厂商都有这种行为,猜测CDN优化或者流量代理的可能性大一些。但是这些对于很多安全来说的也的确存在一些绕过的可能。毕竟这个IP服务器自己是没有什么问题的。

大致原理如下:

后续找了一台主机自己测试一下访问,结果的确是直接返回类似与Redirect,直接在浏览器当中返回了后续的网址的路径。输入www.baidu.com当前界面就直接跳转到百度。

本地抓包也看了一下发现本主机也是仅只与120.52.51.19建立了HTTP连接。

通过对同网段的IP进行测试发现都是存在同样的情况:

120.52.51.13----- 120.52.51.20

0×4 抓包检查

由于没有拿到此web的具体实现的一些源码很多猜想也无法得到证实,于是在网关处进行抓包想看一下具体请求的URL定位到如下2个:

120.52.51.13:80/osce11-ilspn30-p.activeupdate.trendmicro.com:80/activeupdate/pattern/itbldiff_1914201800_1914201900.zip

120.52.51.13:80/osce11-ilspn30-p.activeupdate.trendmicro.com:80/activeupdate/pattern/crczdiff_1914002000_1914200400.zip

通过对内存进行检查最后定位到趋势科技的产品的进程,看起来应该是升级包一类的操作吧。

0×5 总结

通过一些查询发现还是不少这样的IP服务器因为安全经验不足一时间也搞不清楚背后的套路,始终觉得有点诡异或者是什么新姿势,但是对主机进行检查又没有发现其他异常初步认为此次行为这就是个误报就算结案了还好是虚惊一场,不然又得加班几点搞了最近已经快吃不消了,祝愿各位IT大佬们少加班吧。

*本文作者:si1ence,转载请注明来自FreeBuf.COM

*本文原创作者:si1ence,本文属于FreeBuf原创奖励计划,未经许可禁止转载

0×0 背景 

持久化后门是指当入侵者通过某种手段拿到服务器的控制权之后,通过在服务器上放置一些后门(脚本、进程、连接之类),来方便他以后持久性的入侵,简单梳理一下日常遇见windows用的比较多的一些持久化方式方便以后排查问题使用。

图片1.png

0×1 注册表自启动

最常见的在指定键值添加一个新的键值类型为REG_SZ,数据项中添写需要运行程序的路径即可以启动,此类操作一些较为敏感容易被本地AV拦截,目前也是较为常见的一种方式。

图片2.png

键值路径如下:

HKEY_LOCAL_MACHINE\SOFTWARE\Microft\windows\currentversion\run

自启动项目如下:

图片3.png

0×2 用户登录

在注册表路径:HKCU\Environment\

创建字符串键值:UserInitMprLogonScript

键值设置为特定的脚本路径即可:

图片4.png

 另外一种实现方式是修改winlogon Userinit字段:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit

图片5.png

Powershell的一键修改命令如下:

Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon" -name Userinit -value "C:\Windows\system32\userinit.exe,***************"

0×3 定时任务

Windows实现定时任务主要有schtasks与at二种方式,一定层次说上schtasks是at命令的升级版、主要行为特别表现从一个特定的外网地址下载downloader样本或病毒母体或者维持CC通信的心跳包。

图片6.png

使用以下命令可以一键实现:

"schtasks /create /sc minute /mo 1 /tn "chrome" /tr wscript.exe C:\Users\\AppData\Local\Temp\13442980_crypted.vbs"

图片7.png

0×4 WMI

WMI是微软基于Web的企业管理(WBEM)的实现版本,这是一项行业计划,旨在开发用于访问企业环境中管理信息的标准技术。主要与Powershell命令配合使用可以实现无文件攻击重要方式,具有良好的隐蔽性也是目前较为常用的持久化手段。

关键实现的代码如下:

图片8.png

WMI对象主要是执行一个WQL(WMI Query Language)的查询后,本地调用Powershell执行响应的代码由于没有文件保存在本地磁盘能够较好的免查杀。

图片9.png

Black Hat 2015公布了一个WMIBackdoor的poc毕竟还是经典,在流行的powersploit与nishang框架里面也有相关的ps1文件。

传送门:https://github.com/mattifestation/WMI_Backdoor

0×5 webshell

在指定的web服务器路径藏的很深的那种放置一个webshell,同时做好免杀后的shell往往比常规的系统后门更难被发现,这个操作很常规。

图片10.png

各类webshell种类比较多传送门:

https://github.com/xl7dev/WebShell

0×6 自启动服务 

简单的分为二种方式将自己的恶意的可执行文件注册成服务或者调用系统进程如svchost加载dll文件运行服务。第二种方式相对隐蔽性较好由于系统进程的特殊性往往不敢轻易终止进程,由于此类均在PE文件或者其他类型文件在磁盘中容易被查杀,特殊处理过的除外。

Metasploit可以使用Metsvc创建服务,此类操作极容易被AV查杀。 

如下是永恒之蓝挖矿病毒一个常见病毒,通过伪装服务名为系统服务瞒天过海。

图片11.png

在Meterpreter下可以运行run metsvc将会在目标主机上以Meterpreter的服务的形式注册在服务列表中,并开机自动自动:

图片12.png

Windows服务端服务注册成功:

图片13.png

0×7 dll劫持 

如果在进程尝试加载一个DLL时没有指定DLL的绝对路径,那么Windows会尝试去指定的目录下查找这个DLL;如果攻击者能够控制其中的某一 个目录,并且放一个恶意的DLL文件到这个目录下,这个恶意的DLL便会被进程所加载,从而造成代码执行。

比较常用的如LPK.dll的劫持:

win7及win7以上系统增加了KnownDLLs保护,需要在注册表:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\ExcludeFromKnownDlls

下添加 “lpk.dll” 才能顺利劫持:

图片14.png

 另外一种思路是通过查看被劫持的DLL的导出函数表,编程实现劫持DLL向原DLL的导出函数的转发,并加入你的恶意代码达到一个劫持的效果。

0×8 COM劫持

主要通过修改CLSID下的注册表键值,实现对CAccPropServicesClass和MMDeviceEnumerator劫持,而系统很多正常程序启动时需要调用这两个实例,所以,这就可以用作后门来使用,并且,该方法也能够绕过Autoruns对启动项的检测。

传送门如下:https://www.gdatasoftware.com/blog/2014/10/23941-com-object-hijacking-the-discreet-way-of-persistence

图片15.png

Powershell版本的poc:https://github.com/3gstudent/COM-Object-hijacking

图片16.png

0×9 Bootkit

MBR后门主要的思路是读取主引导记录和把分区表从主引导记录中复制出来。然后把自己的包含恶意二进制数据的主引导记录放到主引导扇区,并复制新的分区表到它。但是,并非只有分区表需要保留,还有原来的主引导记录也需要保存下来,MBR病毒复制原始主引导记录到其它64个未用到的扇区。到MBR病毒执行完自己的操作后在读取原始的主引导记录并跳到0x7c00处执行来引导开机。目前比较流行的比如暗云木马系列:

图片17.png

详细可参考腾讯的研究报告: https://slab.qq.com/news/tech/1308.html

通过PCHunter也能够进行简单的MBR的异常判断,此类后门往往具有较大的实施难度病毒种类往往也较少。

图片18.png

0×10 总结

Windows环境的持久化还有更多霸气侧漏的姿势没有遇见总结到,相对于之前建立隐藏账户、网站跟目录下的webshell、一个后门的exe程序、定时任务这些手法一些更新的手法显得更加隐蔽与难以查杀,希望能给日常背锅的运维、安全应急、开发大佬与首席道歉师在客户现场搞的焦头烂额时候提供一些排查思路吧。

*本文原创作者:si1ence,本文属于FreeBuf原创奖励计划,未经许可禁止转载

0×0 背景 

以前做等级保护的时候漏扫经常扫描出来一些网站有CSRF的漏洞,由于一般扫描器提示为中风险必须要解决经常和开发人员扯皮要怎么改怎么改,每次都描述的不清楚经常感觉心累。

最近看到OWASP的一本《安全测试指南第四版》的书就随手翻了二页其中谈到了关于会话管理测试的一栏目比较感兴趣就从网上随便下载了一个开源的CMS做一下黑盒测试,练练手万一失业了还能转化写写代码做做测试,过程中发现CMS对于很多表单请求都采用了Token认证做的挺好的于是写个笔记方便日后来看。

0×1 抓包分析

 架起代理burpsuit开启准备大干一场,首先找到了一个表单的提交页面,表单主要采用Post方法进行提交,随便填了点数据就提交了。

图片1.png

通过burpsuit拦截下来之后看一下各个参数

图片2.png

通过Post提交到一个Task的action,看这么多参数万一有过滤不严格的情况方法说不定能出现一些XSS或者sql注入的漏洞于是就稍微看了一下就发送到了scanner。

 Proxy放过之后页面却出现了异常提示Token验证不通过。

图片3.png

然后认真一看发现除了一些表单提交的参数外还有一个token=20e168c64ce1f1f98f89e4c8ff9e3aba的字段。表单提交之后response数据包当中也有一个新的token”:”e40fe4b3afedc40f95903fef92eb79ed,这样导致这一个请求包只能请求一次,Burpsuit Scanner基于原有请求包的参数测试的扫描模式就基本上没有什么用了。

图片4.png

Token普遍有二个作用:

1.防止表单重复提交

2.anti csrf攻击(跨站点请求伪造)

 由于token具有较好的随机性,不容易被猜测出来具有良好的安全性,于是看一下源码当中的实现。

0×2 源码分析 

通过请求的路径找到对应的php文件,当请求这个表单的时候会自动执行$label->token()这么一个方法

图片5.png

查看label.php的源码,token这个方法构造hidden表单定义了一个token的变量后赋值Core\Func\CoreFunc::$token

图片6.png

继续再查看CoreFunc的源码,包含了对token生成的过程

 调用microtime生成毫秒数之后打散成数组增加随机性,通过substr提取数字与随机数相乘之后计算md5保证了token的不可预测性。

Token的随机性取决于当前时间、rand随机、md5散列算法

图片7.png

将生成的token存如session服务器会话当中

图片8.png

 提交的表单主要由task.php处理task类当中只是读取了session中userid的字段,使用父类Content的 parent::action($jump, $commit)方法进行验证通过之后再处理表单数据。

图片9.png

一层又一层,感觉真复杂。Content类继承了Controller中的checkToken()检查

Token无论验证是否通过都会删除当前token的值保证了不会被重用

图片10.png

0×3 总结

session应用相对安全但也繁琐,同时当多页面多请求时必须采用多Token同时生成的方法,这样占用更多资源,执行效率会降低。但是对安全性的提升是明显的,对于表单的重复提交、基于单个数据包的变形扫描、解决CSRF漏洞也不是一种不错的方式。

*本文作者:si1ence,转载请注明来自FreeBuf.COM

0×0 背景 

由于MySQL社区版没有自带的审计功能或插件,对于等级保护当中对数据库管理的要求的就存在一定的不满足情况的,抛开条条框框不说数据库的日志是值得研究的,通过收集数据库的日志到企业SOC平台便于安全事件的溯源与故障分析,配合目前的UEBA技术能够轻松发现很多恶意事件。 

根据等级保护内容第四章“数据库管理系统安全技术要求”中 第四节“数据库安全审计”中明确提出数据库管理系统的安全审计应:

1. 建立独立的安全审计系统;

2. 定义与数据库安全相关的审计事件;

3. 设置专门的安全审计员;

4. 设置专门用于存储数据库系统审计数据的安全审计库;

5. 提供适用于数据库系统的安全审计设置、分析和查阅的工具。 

0×1 部署插件

 为了节省购买一些安全设备的费用,可以尝试使用一些开源的日志审计插件。Mysql-audit是macfee公司基于percona开发的MySQL的SQL审计插件。

源码地址如下:https://github.com/mcafee/mysql-audit

首先确定当前mysql的版本去官网下载与之相对应的插件:

图片1.png

图片2.png

 解压插件后需要确认mysql插件的安装目录:

图片3.png

图片4.png

将解压出来的插件libaudit_plugin.so复制到插件的目录下:

图片5.png

使用mysql的函数install plugin导入此插件后通过show plugin确认是否导入成功。

主要命令如下:

install plugin audit soname ‘libaudit_plugin.so’

图片6.png图片7.png

安装完成之后并不会立马开始审计内容,需要定义一些参数。

Audit_json_file这个参数要整体控制是否开启审计功能使用命令:

Set variables audit_json_file=on

  开启审计功能:

图片8.png

审计后的记录名可以通过查询变量audit_json_log_file获取:

Show variables like “audit_json_log_file”

默认的审计记录格式如下:

图片9.png

Json格式如下:

图片10.png

同时插件支持一些自定义的参数与命令,包括白名单与黑名单的功能。

Audit_whitelist_users: 不审计user用户的所有命令

Aduit_record_cmds: 需要进行审计的命令种类

图片11.png

更多的参数配置项目可以参考官方给的手册:

https://github.com/mcafee/mysql-audit/wiki/Configuration

图片12.png

0×2 总结

1. 通过插件的方式可以实现mysql日志的审计通过ELK的框架实现日志的保存与分析,再通过后期写一些脚本分析可以实现安全检测与业务分析等多个功能,关键是零成本特别适合那些”一个人的安全部”有此需求的同行们. 

2. 根据一些测试数据表示,插件对性能的影响是比较大的约有20%左右的消耗需要结合具体的业务情况进行评估。

*本文作者:si1ence,转载请注明来自FreeBuf.COM