编辑2:
有一个很好的理由可以使这篇文章引起如此多的关注:您设法在PC上记录了入侵者的整个实时会话。这与我们的日常经历有很大的不同,在我们的日常经历中,我们处理发现他的行为后果并试图纠正它们的后果。在这里,我们看到他在工作,看到他在建立后门时遇到一些问题,回溯他的脚步,发狂地工作(也许是因为他正坐在你的办公桌上,如上面所建议的,或者在我看来,很可能是因为他是无法使其恶意软件在系统上运行(请参阅下文),并尝试部署完全独立的控制工具。这就是安全研究人员每天用蜂蜜陷阱所见证的。对我来说,这是一个非常难得的机会,也是一些娱乐的源泉。
你肯定被黑了。这样做的证据并非来自auth.log
您显示的文件的片段,因为这表明登录尝试失败,发生的时间较短(两秒)。您会注意到第二行指出Failed password
,而第三行指出pre-auth
断开连接:此人尝试失败。
证据来,而不是从两个文件的内容 http://222.186.30.209:65534/yjz
和http://222.186.30.209:65534/yjz1
它的攻击者下载到您的系统。
该网站目前对所有人开放,我可以下载它们。我首先运行file
它们,显示:
$ file y*
yjz: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped
yjz1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
然后,我将它们带到了我拥有的64位Debian VM上。通过strings
命令检查它们的内容,发现了很多可疑的内容(参考各种众所周知的攻击,要替换的命令,明显用于设置新服务的脚本,等等)。
然后,我生成了两个文件的MD5哈希,然后将它们馈送到Cymru的哈希数据库中,以查看它们是否是恶意软件的已知代理。虽然yjz
不是,但yjz1
Cymru报告说,防病毒软件检测到的可能性为58%。它还指出此文件是三天前最后一次看到,因此它是最近的。
在我获得的两个文件上运行clamscan(clamav
软件包的一部分):
$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND
因此我们现在可以确定标准的Linux软件可以识别它。
你该怎么办?
尽管这是一个很新的系统,但两个系统都不是很新,例如,请参阅有关XorDdos的这篇2015年1月的文章。因此,大多数免费软件包都应能够将其删除。你应该尝试:clamav
,rkhunter
,chkrootkit
。我在Google周围搜索,看到他们声称能够发现它。使用它们检查前任的工作,但是在运行这三个程序之后,您应该可以使用了。
对于更大的问题,what should you do to prevent future infections
Journeyman的答案是一个很好的第一步。请记住,这是一场持续不断的斗争,我们所有人(包括我!)都可能在不知不觉中迷失了自己。
编辑:
在Viktor Toth的(间接)提示下,我想添加一些评论。入侵者确实遇到了一些困难:他下载了两种截然不同的黑客工具,多次更改了它们的权限,多次重新启动了它们,然后尝试多次禁用防火墙。很容易猜到发生了什么:他希望自己的黑客工具为他受感染的个人电脑之一打开通信通道(请参阅下文),并且当他看不到此新通道出现在其控制GUI上时,他担心自己的黑客行为该工具被防火墙阻止,因此他重复了安装过程。我同意维克多·托特(Viktor Toth)的观点,认为他的这一特定运作阶段似乎并没有取得预期的成果,但我要非常鼓励您 不要低估对您的电脑造成的损害程度。
我在这里提供的部分输出strings yjz1
:
etc/init.d/%s
/etc/rc%d.d/S90%s
--del
chkconfig
remove
update-rc.d
/etc/cron.hourly/gcc4.sh
/etc/rc.d/rc%d.d/S90%s
--add
defaults
/proc/%d/exe
/proc/self/exe
HOME=/
MYSQL_HISTFILE=/dev/null
#!/bin/sh
# chkconfig: 12345 90 90
# description: %s
### BEGIN INIT INFO
# Provides: %s
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop:
# Short-Description: %s
### END INIT INFO
case $1 in
start)
stop)
esac
sed -i '/\/etc\/cron.hourly\/gcc4.sh/d' /etc/crontab && echo '*/3 * * * * root /etc/cron.hourly/gcc4.sh' >> /etc/crontab
etc/init.d/%s
GET %s HTTP/1.1
%sHost: %s
POST %s HTTP/1.1
%sHost: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %d
%s%s
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; TencentTraveler ; .NET CLR 1.1.4322)
Connection: Keep-Alive
这提供了使用,带有的历史记录文件以及指向的两个文件进行链接(表明已植入定制的欺诈性Shell版本)来篡改服务(in /etc/init.d
和in中/etc/rc.d
)的证据。然后,程序会生成一个HTTP请求(向中文站点,crontab
mysql
proc
bash
Accept-Language: zh-cn
这为David Schwartz的上述评论提供了实质内容),这可能会造成更大的破坏。在请求中,二进制文件(Content-Type: application/x-www-form-urlencoded
)将下载到受攻击的PC(GET),然后上传到控制计算机(POST)。我无法确定什么会被下载到个人电脑的攻击,但鉴于两者的尺寸小yjz
和yjz1
(1.1MB和600KB,repectively),我可以大胆推测,最需要的文件斗篷rootkit的,即改变的的版本ls
,netstat
,ps
,ifconfig
,...,就可以下载这种方式。这就可以解释攻击者为使下载继续进行的疯狂尝试。
不能确定上述内容是否会用尽所有可能性:我们当然缺少部分成绩单(在第457和481行之间),并且看不到注销;此外,尤其令人担忧的是495-497行,
cd /tmp; ./yd_cd/make
指的是我们未下载的文件,可能是编译的文件:如果是这样,则意味着攻击者(最终是?)了解其可执行文件存在的问题,并正在尝试对其进行修复,在这种情况下,被攻击的PC永远消失了。[事实上,攻击者下载到被黑客攻击的计算机上(以及我下载到我的64位Debian VM上)的两个版本的恶意软件是针对不合适的体系结构x86的,而被黑客入侵的pc的名称本身就说明了这样一个事实:他正在处理手臂架构]。
我之所以写这篇文章是为了敦促您尽可能将系统与专业仪器配合使用,或者从头开始重新安装。
而且,顺便说一句,如果这对任何人都有用,这就是尝试连接的331个 IP地址的列表yjz
。此列表太大(并且可能注定还会变得更大),我相信这就是篡改的原因mysql
。另一个后门提供的列表是相同的,我认为这是将如此重要的信息公开公开的原因(我认为攻击者不希望将其存储为内核格式,因此他将整个列表放在一个纯文本文件中,无论使用哪种操作系统,他的所有后门程序都可以读取该文件:
61.132.163.68
202.102.192.68
202.102.213.68
202.102.200.101
58.242.2.2
202.38.64.1
211.91.88.129
211.138.180.2
218.104.78.2
202.102.199.68
202.175.3.3
202.175.3.8
202.112.144.30
61.233.9.9
61.233.9.61
124.207.160.110
202.97.7.6
202.97.7.17
202.106.0.20
202.106.46.151
202.106.195.68
202.106.196.115
202.106.196.212
202.106.196.228
202.106.196.230
202.106.196.232
202.106.196.237
202.112.112.10
211.136.17.107
211.136.28.231
211.136.28.234
211.136.28.237
211.147.6.3
219.141.136.10
219.141.140.10
219.141.148.37
219.141.148.39
219.239.26.42
221.130.32.100
221.130.32.103
221.130.32.106
221.130.32.109
221.130.33.52
221.130.33.60
221.176.3.70
221.176.3.73
221.176.3.76
221.176.3.79
221.176.3.83
221.176.3.85
221.176.4.6
221.176.4.9
221.176.4.12
221.176.4.15
221.176.4.18
221.176.4.21
58.22.96.66
218.104.128.106
202.101.98.55
211.138.145.194
211.138.151.161
211.138.156.66
218.85.152.99
218.85.157.99
222.47.29.93
202.101.107.85
119.233.255.228
222.47.62.142
122.72.33.240
211.98.121.27
218.203.160.194
221.7.34.10
61.235.70.98
113.111.211.22
202.96.128.68
202.96.128.86
202.96.128.166
210.21.3.140
210.21.4.130
211.95.193.97
211.98.2.4
211.98.4.1
211.162.61.225
211.162.61.235
211.162.61.255
211.162.62.1
211.162.62.60
221.4.66.66
202.103.176.22
202.96.144.47
210.38.192.33
202.96.134.33
202.96.134.133
202.96.154.15
210.21.196.6
221.5.88.88
202.103.243.112
202.193.64.33
61.235.164.13
61.235.164.18
202.103.225.68
221.7.136.68
202.103.224.68
211.97.64.129
211.138.240.100
211.138.242.18
211.138.245.180
221.7.128.68
222.52.118.162
202.98.192.67
202.98.198.167
211.92.136.81
211.139.1.3
211.139.2.18
202.100.192.68
211.97.96.65
211.138.164.6
221.11.132.2
202.100.199.8
202.99.160.68
202.99.166.4
202.99.168.8
222.222.222.222
202.102.224.68
202.102.227.68
222.85.85.85
222.88.88.88
210.42.241.1
202.196.64.1
112.100.100.100
202.97.224.68
219.235.127.1
61.236.93.33
211.93.24.129
211.137.241.34
219.147.198.230
202.103.0.68
202.103.0.117
202.103.24.68
202.103.44.150
202.114.0.242
202.114.240.6
211.161.158.11
211.161.159.3
218.104.111.114
218.104.111.122
218.106.127.114
218.106.127.122
221.232.129.30
59.51.78.210
61.234.254.5
202.103.96.112
219.72.225.253
222.243.129.81
222.246.129.80
211.142.210.98
211.142.210.100
220.168.208.3
220.168.208.6
220.170.64.68
218.76.192.100
61.187.98.3
61.187.98.6
202.98.0.68
211.93.64.129
211.141.16.99
202.98.5.68
219.149.194.55
211.138.200.69
202.102.3.141
202.102.3.144
58.240.57.33
112.4.0.55
114.114.114.114
114.114.115.115
202.102.24.34
218.2.135.1
221.6.4.66
221.131.143.69
202.102.8.141
222.45.0.110
61.177.7.1
218.104.32.106
211.103.13.101
221.228.255.1
61.147.37.1
222.45.1.40
58.241.208.46
202.102.9.141
202.102.7.90
202.101.224.68
202.101.226.68
211.141.90.68
211.137.32.178
202.96.69.38
211.140.197.58
219.149.6.99
202.96.86.18
101.47.189.10
101.47.189.18
118.29.249.50
118.29.249.54
202.96.64.68
202.96.75.68
202.118.1.29
202.118.1.53
219.148.204.66
202.99.224.8
202.99.224.67
211.90.72.65
211.138.91.1
218.203.101.3
202.100.96.68
211.93.0.81
222.75.152.129
211.138.75.123
202.102.154.3
202.102.152.3
219.146.1.66
219.147.1.66
202.102.128.68
202.102.134.68
211.138.106.19
211.90.80.65
202.99.192.66
202.99.192.68
61.134.1.4
202.117.96.5
202.117.96.10
218.30.19.40
218.30.19.50
116.228.111.118
180.168.255.18
202.96.209.5
202.96.209.133
202.101.6.2
211.95.1.97
211.95.72.1
211.136.112.50
211.136.150.66
119.6.6.6
124.161.97.234
124.161.97.238
124.161.97.242
61.139.2.69
202.98.96.68
202.115.32.36
202.115.32.39
218.6.200.139
218.89.0.124
61.139.54.66
61.139.39.73
139.175.10.20
139.175.55.244
139.175.150.20
139.175.252.16
168.95.1.1
210.200.211.193
210.200.211.225
211.78.130.1
61.31.1.1
61.31.233.1
168.95.192.1
168.95.192.174
61.60.224.3
61.60.224.5
202.113.16.10
202.113.16.11
202.99.96.68
202.99.104.68
211.137.160.5
211.137.160.185
219.150.32.132
202.98.224.68
211.139.73.34
61.10.0.130
61.10.1.130
202.14.67.4
202.14.67.14
202.45.84.58
202.45.84.67
202.60.252.8
202.85.128.32
203.80.96.9
203.142.100.18
203.142.100.21
203.186.94.20
203.186.94.241
221.7.1.20
61.128.114.133
61.128.114.166
218.202.152.130
61.166.150.123
202.203.128.33
211.98.72.7
211.139.29.68
211.139.29.150
211.139.29.170
221.3.131.11
222.172.200.68
61.166.150.101
61.166.150.139
202.203.144.33
202.203.160.33
202.203.192.33
202.203.208.33
202.203.224.33
211.92.144.161
222.221.5.240
61.166.25.129
202.96.103.36
221.12.1.227
221.130.252.200
222.46.120.5
202.96.96.68
218.108.248.219
218.108.248.245
61.130.254.34
60.191.244.5
202.96.104.15
202.96.104.26
221.12.33.227
202.96.107.27
61.128.128.68
61.128.192.68
218.201.17.2
221.5.203.86
221.5.203.90
221.5.203.98
221.7.92.86
221.7.92.98
以下代码
#!/bin/bash
echo 0 > out
while read i; do
whois $i | grep -m 1 -i country >> out
done < filename
cat out | grep -i cn | wc -l
上面的列表显示,在331个地址中,有302个位于中国大陆,其余的位于香港,蒙古,台湾。这进一步支持了大卫·施瓦茨(David Schwartz)的论点,即这主要是中国机器人圈。
编辑3
在@vaid的要求下(OP的作者,请阅读下面的评论),我将添加有关如何增强基本Linux系统安全性的评论(对于提供许多服务的系统,这是一个更为复杂的主题)。vaid
声明他做了以下事情:
重新安装系统
将root密码更改为16个字符长的密码,混合使用大小写字母,字符和数字。
将用户名更改为6个混合字符长的用户名,并应用与root用户相同的密码
将SSH端口更改为5000以上
关闭SSH根登录。
很好(除非我使用10,000以上的端口,因为许多有用的程序都使用10,000以下的端口)。但是我不能足够强调需要使用加密密钥而不是密码来进行ssh登录。我会给你一个个人的例子。在我的一个VPS上,我不确定是否要更改ssh端口。我将其保留在22岁,但使用加密密钥进行身份验证。我有数百个磨合尝试每天,但没有成功。当我厌倦了每天检查没有人成功时,我最终将端口切换到10,000以上,闯入尝试变为零。请注意,这并不是说黑客是愚蠢的(他们不是!),他们只是在寻找更容易的猎物。
使用RSA作为签名算法来激活加密密钥很容易,请参阅Jan Hudec在下面的评论(谢谢!):
cd; mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -t rsa (then hit <kbd>ENTER>/kbd> three times); cat id_rsa.pub >> authorized_keys; chmod 600 *
现在,您要做的就是将文件复制id_rsa
到要连接的计算机上(在目录中.ssh
,也设置chmod
为700),然后发出命令
ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine
当确定此方法有效时,请在服务器(=要连接的计算机)上编辑文件/etc/ssh/sshd_config
,然后更改行
#PasswordAuthentication yes
至
PasswordAuthentication no
并重新启动ssh
服务(service ssh restart
或systemctl restart ssh
,取决于发行版)。
这将承受很多。实际上,目前尚没有针对openssh v2
所使用的RSA和RSA 的当前版本的已知利用openssh v2
。
最后,为了真正关闭您的计算机,您将需要配置防火墙(netfilter / iptables),如下所示:
iptables -A INPUT -p tcp --dport YourChosenNonStandardPort -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
这样,1)允许来自LAN和WAN的ssh连接,2)允许所有源自您的请求的输入(例如,当您加载网页时),3)丢弃输入中的所有其他内容,4)允许所有内容输出和5-6)允许回送接口上的所有内容。
随着需求的增长和需要打开更多端口,可以通过在列表顶部添加以下规则来做到这一点:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
例如允许人们访问您的Web浏览器。