作者lance70176 (十三夜)
看板Soft_Job
标题[心得] 番外:外面忙堵洞,骇客早拿钥匙走正门
时间Fri Oct 23 21:16:43 2026
上一篇聊 PHP2Shell 的补法,这篇算後续。
去补漏洞的那天,我在主机上撞见了别的东西。跟 PHP 没关系,而且对方已经在里面
待了一百天。
细节不方便讲太多,这篇只讲手法,还有大家可以怎麽自己检查。
先说怎麽发现的
先讲一下背景。我们平常是权责分离的:主机归运维管,写程式的人不拿主机权限,程
式交给部署流程上线就好。
这是对的做法,开发的人本来就不该随手能 root 进正式机。
这次会进去,是因为那几台跑的是旧版 PHP,官方不出修补,要自己把修补编进去、重
新打包,再到主机上调整设定、确认服务正常。
这种事运维一个人不好处理,才临时开权限让我上去一起弄。
换句话说,要不是这次 PHP 刚好要自己编,我根本不会进到那几台,也就不会发现。
升级之前我习惯先看一下主机现况:跑了哪些程式、连去哪里、最近多了什麽档案。
ps 列出来,有一行看起来像 Linux 核心自己的工作执行绪(kworker)。
这种东西每台主机都有一大堆,平常没人会多看一眼。
但它有两个地方怪怪的:
1. 名字少一截,格式跟真的 kworker 对不上。
2. 它的「父程序」是 1。真正的核心执行绪,父程序一定是 2。
打个比方,就是有个人穿着公司制服在办公室走来走去,但他挂的员工证是别家公司发
的。
顺着程序往回追,本体是一个藏在 systemd 系统目录里的隐藏档。
档名前面有个点,ls 预设看不到;名字还取得很像云端服务自己的东西,放在云端主
机上一点都不突兀。
它能做什麽
把档案里的字串捞出来看,功能大概有:远端开 shell、上传下载档案、看萤幕、键盘
侧录、port 转发、自我更新。
就是一支完整的远端控制木马,Go 写的。
CPU 几乎不吃,没在挖矿,监控图上什麽都看不出来。它就只是安静地待着,等人来用。
启动时间是 7/15 下午 3:38,到我发现那天刚好一百天。
两天後,对方还用它开了两个 root 的互动视窗,开到现在都没关。
它怎麽跟外面联络
一般木马会去连某个 IP 的某个 port,防火墙有机会挡下来。这只走 DNS。
DNS 就是电脑在问「这个网址的 IP 是多少」的那个查询。
几乎每台主机都允许对外查 DNS,不然连网址都解析不了。
它把要传出去的资料编进查询的网址里,一路问到攻击者自己架的 DNS 伺服器,对方
再把指令夹在回答里传回来。
防火墙看到的,就只是主机在查网址而已。
不只一台
拿同样的特徵去扫其他主机,不只一台中。
有的还多做了一步:注册成 systemd 服务,名字取得像系统更新程式,挂掉会自己重
启。
把档案时间拼起来:
7/11 下午 最早被放东西的一台
7/1x 15:34 另一台
7/1x 15:38 再一台
7/2x、7/3x 又各放了一支不同的程式
15:34 跟 15:38,两台只差四分钟。
自动化病毒不会这样打,这是有人坐在电脑前,一台一台登进去放的。
从哪里进来的?
这是我最在意的:是不是 PHP 漏洞?
查完的答案是:这次跟 PHP 无关。
- PHP2Shell 是 10/21 才公开的,入侵发生在 7 月
- 网站目录没找到 webshell
- 最关键的证据在木马程序身上留下的环境变数:看得出来是有人用一般帐号登入,su
do 切成 root,再手动把它跑起来
所以对方是拿着某组合法的登入凭证,从正门走进来的。
防火墙、WAF、PHP 修补,对一个拿着钥匙走正门的人,都没有用。
遇到这种事该怎麽处理
上一篇提到「最高权限只用一瞬间」。这次对方一进来就拿到 root,那招帮不上忙,
只能事後收拾。大方向是:
1. 先留证据再动手。程序资讯、网路连线、木马副本、档案指纹都存下来,不然之後
什麽都查不了
2. 清除。先把程序暂停再砍,删档,连它注册的 systemd 服务一起拿掉
3. 换钥匙。这步最重要。对方开过键盘侧录,主机上的密码、金钥、.env 都只能当作
已经外流,全部换掉
4. 其他升级先缓一缓。主机都被人拿走了,先换 PHP 意义不大,还会破坏现场
手法本身都是老招:伪装核心执行绪、Go 写的木马、DNS 隧道、systemd 常驻,在几
份公开的 APT 报告里都看得到。
老招还能用,代表大部分主机根本没人在看。
你也可以花 5 分钟检查一下
给有在管 Linux 主机的朋友,几个简单的检查:
# 1. 找冒牌核心执行绪(名字有中括号,父程序却不是 2)
ps -eo pid,ppid,args | awk '$3 ~ /^\[/ && $2 != 2 && $1 != 2'
# 2. systemd 跟暂存目录里有没有隐藏的执行档
find /usr/lib/systemd /lib/systemd /tmp /var/tmp /dev/shm -xdev -name '.*'
-type f
# 3. 最近新增、又不属於任何套件的执行档(CentOS/RHEL;Ubuntu 改用 dpkg -S)
find / -xdev -path /proc -prune -o -type f -size +500k -perm -u+x -newermt
2026-06-01 -print 2>/dev/null | xargs -r rpm -qf 2>&1 | grep 'not owned'
# 4. 有没有程序在对外部 IP 查 DNS
ss -tunap | grep ':53 '
第 1 条有输出,就值得好好看一下。
最後
原本只是想升个 PHP,因为要自己编译才临时拿到权限,升级前又多看了一眼。
权责分离本身没有错,但它也代表一件事:开发的人看不到主机,运维忙着维持服务正
常,那个「有没有多一个人住在里面」的问题,很容易变成没有人负责。
要不是这次刚好进去,它现在应该还在那边安静地待着。
补漏洞之前,先看看家里有没有多住一个人。
--
Key君:「哈哈哈哈哈哈,我就是後宫之王——杉崎键!
我是为了野心不惜伤害重要的人,
但同时为了让她幸福也不怕万苦的男人!」
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.116.54.124 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1792761416.A.C96.html
1F:推 cancelpc: 台湾不重视技职,很久就偏向文凭。一堆人在ERP风潮後。 10/24 00:38
2F:→ cancelpc: 为工作临时转软体。想办法乙方转甲方。就...之前台湾就 10/24 00:38
3F:→ cancelpc: 是全世界跳板前几名。 10/24 00:38
4F:推 viper9709: 推分享~看起来好恐怖 10/24 00:57
5F:推 Wishmaster: 这要有点程度吧,一般维运也不一定有这个程度,有也 10/24 04:00
6F:→ Wishmaster: 不一定会看那麽细,台湾维运的水准怎样大家也都知道 10/24 04:00
7F:推 timofEE: 内容很棒的同时AI味好浓 10/24 04:39
8F:推 wizozd84070: 谢分享 10/24 06:00
9F:→ wizozd84070: 虽然不知是否是真实故事但.若遇到这种事情真的蛮难防 10/24 06:02
10F:推 ILoveAMD: 一般会把 ps 换成隐藏自己名称的版本 10/24 06:08
11F:推 nicetw20xx: 推,想问改换k8s k3s会不会比较快xD? 10/24 10:21
容器化确实比较好砍掉重练 但这次是帐号外泄 换k8s帐号一样掉还是一样
12F:→ lance70176: 真实案例 还有其他手法处理中不方便写 遇过很多事故 10/24 10:30
13F:→ lance70176: 比网路上的还扯 小说都不敢这样写的等级 不方便分享 10/24 10:30
14F:→ lance70176: 而已 10/24 10:30
15F:推 workhardplz: 推推 感谢分享 10/24 10:33
16F:→ okita3088: 不导资安被入侵也是刚好 台湾继续cost down 10/24 10:34
17F:推 jack0204: IT运维通常不懂这方面,还有RD自己管的也是各种全开 10/24 12:29
18F:推 Romulus: 鬼故事 连怎麽被入侵造成过什麽伤害都不知道是吧 10/24 16:18
19F:→ Romulus: 难怪僵屍永远比电影还多 10/24 16:19
20F:→ labbat: 静静地在那边上传资料的真可怕 10/24 16:36
21F:推 wsad50232: 看不懂 10/24 18:55
22F:→ superpandal: 这只不过是亡羊补牢 而且通常处理不会这麽傻 别人直 10/24 19:37
23F:→ superpandal: 接替换你的执行档或伪装执行档你又该如何? 10/24 19:39
24F:→ superpandal: 用systemd的系统也是很傻 10/24 19:41
25F:→ superpandal: 拿到shell後也不一定得本地储存恶意程式 除非有持续 10/24 19:46
26F:→ superpandal: 入侵的需要 先不管运维 很多开发出来的程式 整体运作 10/24 19:49
27F:→ superpandal: 机制也很糟糕 更不要说极致了 10/24 19:51
28F:→ superpandal: 其它一堆太多我就不吐嘲了 10/24 19:58
29F:→ kd992102: 其实骇客的招数大部分还是相同的路数,因为太好用了 10/24 20:18
30F:推 mathrew: DNS玩法,好几年前就有了,资安观念好的公司,都会监控 10/24 21:39
31F:→ mathrew: 这段,有没有怪的DNS查询 10/24 21:40
32F:→ asdfghjklasd: 用 windows linux 的又不会补洞的就是肉机 10/24 22:46
33F:→ asdfghjklasd: 我主机跑 freebsd 8.4 跑10多年都没事也没修补 10/24 22:46
34F:→ asdfghjklasd: 昨天早上我还把 fortigate 全都升级了 10/24 22:47
35F:→ asdfghjklasd: 基本上是设备有没有人在看,有没有能力 10/24 22:47
36F:推 oToToT: AI味好重 10/24 23:59
37F:推 asdkmm5050: 这叫 C2 beaconing,EDR 通常都抓得到的 10/25 02:39
有EDR或DNS监控的话这只早就被抓了 问题就是很多公司两个都没有
38F:→ lance70176: 亡羊补牢 下一句可以想一下 後面自然是要重建 10/25 03:25
39F:→ lance70176: 替换跟伪装自然查过了 这次案例没有所以没说 10/25 03:26
※ 编辑: lance70176 (122.116.54.124 台湾), 10/25/2026 03:45:03
40F:→ sinclaireche: 想省钱的是人不请服务不买 活该被打穿 10/25 16:01
41F:推 freemantw: 推分享! 10/25 17:12
42F:推 guanting886: 如果外部防火墙跟主机防火墙有设定好,有人拿着有效 10/25 17:33
43F:→ guanting886: 的帐号跟Key就能进去,不就代表内鬼 or 那个地方的环 10/25 17:33
44F:→ guanting886: 境有问题吗? 10/25 17:33
45F:→ labbat: 一般会有堡垒机呗,透过帐密登入的可以追朔 10/25 18:44
46F:推 dennis2030: AI 味浓到快被熏哭 10/25 20:48
47F:→ aria0520: 不要请AI写完直接复制贴上好吗 10/25 23:07
48F:→ bill0205: ai文能不能自己看过修饰一下再发 很怀疑只是洗文章 你开 10/26 12:50
49F:→ bill0205: 发只是ai写没自己review 出bug死的会很惨 10/26 12:50
50F:推 Psytoolkid: 谢谢分享 10/26 23:42
51F:推 justptt978: 有技术量 但AI味太明显 有心得还是给推 10/27 22:55