安全研究 | 使用PortShellCrypter对你的shell会话进行加密

枫少@KillBoy
枫少@KillBoy
管理员
219
文章
0
粉丝
资源分享406,157字数 1402阅读4分40秒阅读模式
AI智能摘要
你是否想过,一个不起眼的shell会话竟能承载加密隧道、UDP转发甚至SOCKS代理?PortShellCrypter(PSC)正是这样一款低调却强大的端到端加密工具,它能在无需底层网络支持的情况下,为UART、ADB、Telnet等各类控制台会话建立安全通道。不仅能加密传输、转发TCP/UDP流量,还可实现IPv4到IPv6的透明转换,甚至通过SOCKS4支持远程浏览器上网。更关键的是,它不破坏数据报边界,完美避开SSH转发的DNS解析缺陷。想知道如何用它打通渗透测试中的“最后一公里”?实战演示视频带你一探究竟。
— AI 生成的文章内容摘要

安全研究 | 使用PortShellCrypter对你的shell会话进行加密

PortShellCrypter-PSC

PortShellCrypter支持对shell会话进行E2E加密,可以帮助研究人员在完全不需要了解底层传输机制的情况下,对会话信息进行可靠的加密。除此之外,PortShellCrypter还可以发送/接收Base64编码的数据而无需对数据进行修改或过滤。除了接收E2E PTY之后,还可以转发TCP和UDP连接,这个功能有些类似于OpenSSH的-L参数。而且不需要在信息发起点本地分配IP地址,这将允许取证人员或渗透测试人员通过下列方式创建网络连接:

到设备的UART会话;

ADB Shell会话,如果OEM adbd不支持TCP转发;

Telnet会话;

不带ppp的调制解调器拨号;

其它类型的控制台登录方式;

SSH/telnet/modem混合会话;

....

想象一下,在Shell会话中有一个不可见的ppp会话,而目标远程设备实际上不支持ppp,那么PortShellCrypter就可以发挥作用了。

PortShellCrypter支持在linux、Android、OSX、FreeBSD、NetBSD和OpenBSD上运行。

PSC还提供了针对SOCKS4和SOCKS5代理的支持,以便通过Portshell或调制解调器拨号进行实际的Web浏览会话。

工具下载和项目构建

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/stealth/psc.git

接下来,我们需要编辑Makefile来映射我们的预共享密钥,即在Makefile的头部编辑。然后,在linux设备上切换到该项目目录,并运行make命令即可。

在BSD上,我们还需要安装GNU make,并调用gmake命令。

在macOS上,我们需要安装OpenSSL,并在Makefile中声明正确的安装路径,然后运行make命令即可。

linux系统上,PSC使用的是Unix98伪命令行终端,在其他系统上它将使用POSIX pty,不过对于用户来说不会有什么太大的区别。

工具使用

PortShellCrypter的使用非常简单且直接。在我们计算机上,执行pscl,然后传递需要转发的TCP或UDP端口号即可,比如说:

linux:~ > ./pscl -T 1234:[192.168.0.254]:22 -U 1234:[8.8.8.8]:53     PortShellCrypter [pscl] v0.60 (C) 2006-2020 stealth -- github.com/stealth/psc     pscl: set up local TCP port 1234 to proxy to 192.168.0.254:22 @ remote.  pscl: set up local UDP port 1234 to proxy to 8.8.8.8:53 @ remote.     pscl: Waiting for [pscr] session to appear ...  linux:~ >     [ UART / SSH / ... login to remote side ... ]

通过shell会话连接远程站点之后,执行pscr命令:

linux:~ > ./pscr     PortShellCrypter [pscr] v0.60 (C) 2006-2020 stealth -- github.com/stealth/psc        pscl: Seen STARTTLS sequence, enabling crypto.  linux:~ >

一旦执行了pscr命令,两端就建立了一个加密握手,并在现有会话上建立了一个对我们透明的附加协议。然后,我们可以通过TCP连接到本地设备上的127.0.0.1:1234以达到192.168.0.254:22,或者通过UDP连接到8.8.8.8解析器。如果远程站点具有IPv6连接,这也适用于[IPv6]地址。实际上,我们甚至可以使用它将IPv4软件转换为IPv6,因为我们总是在本地连接到127.0.0.1。

此时,我们可以传递多个-T和-U参数。如果我们的会话已经被e2e加密,那么我们可以向本地pscl进程发送SIGUSR1。

如果我们想从远程SSH shell使用Tor,PSC也很有用,我们可以将socks5和DNS端口转发到远程主机127.0.0.1地址。由于SSH不转发UDP数据包,因此通常会使用两个socat连接器或类似的连接器通过Tor节点进行解析。PSC的优点是保持UDP数据报边界,而SSH-L上的socat可能会打破数据报边界并创建格式错误的DNS请求。

会话将使用我们在Makefile中选择的PSK的aes_256_ctr进行加密。这种加密方案是可以修改的,但是添加AAD或OAD数据会破坏数据包的大小,因为在交互式会话中,由于Base64编码,每个类型的字符都会导致发送更多的数据。

UART会话可以通过屏幕使用,但不能通过minicom使用,因为minicom将创建带有状态行的不可见窗口,并充当破坏PSC协议的过滤器。PSC尝试检测过滤,并且可以承受一定数量的数据损坏,但在某些情况下无法恢复。tmux也有类似的东西。我们应该避免将pty处理程序与PSC堆叠在一起,因为PSC会过多地混乱/处理它们的传入数据。

在这里,我们需要为pscl和pscr设置SHELL环境变量,以便PSC知道在pty上执行哪个SHELL。默认情况下,大多数环境中都设置了SHELL,但如果没有设置,则需要像SHELL=/bin/bash pscl等那样执行PSC。

SOCKS4和SOCKS5支持

pscl还支持通过SOCKS4(-4端口)和SOCKS5(-5端口)转发TCP连接。这将端口设置为TCP连接的SOCKS端口,我们可以从portshell会话浏览远程网络,而无需在渗透测试期间打开任何其他连接。对于chrome,必须使用SOCKS4,因为pscsocks实现本身不支持解析域名。相反,它要求传递IPv4或IPv6地址。由于Chrome会将SOCKS5协议地址类型始终设置为域名(0x03)-即使在地址栏中输入了IP地址-SOCKS5不能与chrome一起使用。但是你可以将chrome与SOCKS4结合使用,因为这个协议只支持IPv4地址,而不支持域名。

工具使用演示

视频地址:【点我观看

项目地址

PortShellCrypter:【GitHub传送门

https://www.freebuf.com/sectool/265624.html

 
枫少@KillBoy
评论  40  访客  39  作者  1
    • 钓鱼大师
      钓鱼大师 0

      这工具听着挺硬核啊,搞渗透的应该用得上👍

      • 奶味喵
        奶味喵 0

        前几天试了下,UART加密确实稳,就是编译有点小坑

          • 瑶池郡主
            瑶池郡主 0

            @ 奶味喵 这个psk改起来是真麻烦,每次还得翻Makefile,有同感

          • 社牛小光
            社牛小光 0

            make的时候openssl路径没配对,折腾半小时才跑起来…

              • NinjaKitten
                NinjaKitten 0

                @ 社牛小光 openssl路径问题确实坑,建议写个检测脚本自动识别

              • 甜梦泡泡
                甜梦泡泡 1

                BSD上得用gmake是吧?新手表示有点懵

                • 团建请假专业户
                  团建请假专业户 0

                  pscr一执行就自动加密了?那中间人还能截获吗?

                  • 日与夜
                    日与夜 1

                    我之前也搞过类似转发,结果UDP包乱序直接崩了,这能解决?

                      • 烈阳骑士
                        烈阳骑士 1

                        @ 日与夜 UDP乱序问题它说是靠保持数据报边界来解决的,我测过小包基本稳

                      • Whiskey
                        Whiskey 0

                        说真的,minicom不能用有点难受,平时都习惯这工具了

                          • 白虎破军
                            白虎破军 0

                            @ Whiskey minicom要是能兼容就完美了,现在还得切屏幕用,麻烦☹️

                          • 猫耳咖啡
                            猫耳咖啡 0

                            Chrome不支持SOCKS5域名解析?那不就是只能手动改host?

                              • 黑洞探秘者
                                黑洞探秘者 0

                                @ 猫耳咖啡 Chrome不支持域名解析确实坑,不过用curl或者wget倒没啥影响

                              • 行路鸟
                                行路鸟 0

                                要是能自动检测PSK就方便了,每次改Makefile太麻烦

                                • 猫咪布丁果
                                  猫咪布丁果 0

                                  这加密层叠在shell上,会不会影响交互延迟啊?

                                  • 萌萌豚
                                    萌萌豚 1

                                    这加密握手看着挺丝滑,pscr一跑自动就上了,中间真没法插手?

                                      • 风与云
                                        风与云 0

                                        @ 萌萌豚 中间人基本没戏,握手加密后数据都密文了,插不了手

                                      • 幽光引路
                                        幽光引路 1

                                        编译这事儿真得小心,OpenSSL路径写错直接报一堆红,心态崩了

                                        • 永恒流星
                                          永恒流星 0

                                          渗透测试连UART都能加密,这波属于是暗度陈仓了hhh

                                          • 小奶猫
                                            小奶猫 0

                                            要是支持自动PSK检测就好了,每次都得翻Makefile改密钥,手累

                                            • 初音诗织
                                              初音诗织 0

                                              听说能转IPv4到IPv6?那搞内网穿透是不是也能试试这个路子

                                              • 山间晨雾
                                                山间晨雾 0

                                                make完跑demo,延迟几乎没感觉,打字交互挺流畅的

                                                • 薄荷柠檬
                                                  薄荷柠檬 0

                                                  之前在树莓派上搞类似的东西,折腾三天没搞定,这工具真省事

                                                  • 蓝调时光
                                                    蓝调时光 0

                                                    编译报错一堆红太常见了,linux还好,macos最头疼

                                                    • 夜叉泣血
                                                      夜叉泣血 1

                                                      延迟感知不强,但加密层叠多了一层,理论上会有轻微影响

                                                      • 麋鹿迷途
                                                        麋鹿迷途 0

                                                        minicom不能用确实烦,我平时都靠它调试串口,这下得换屏幕了

                                                        • 死亡收割者
                                                          死亡收割者 1

                                                          UDP包边界保持这点挺关键,之前用socat转发DNS就出过问题

                                                          • 杏仁饼干
                                                            杏仁饼干 1

                                                            Chrome不支持SOCKS5域名是硬伤,只能手动绑host凑合用

                                                            • CouchPotato
                                                              CouchPotato 0

                                                              听说能转IPv4到IPv6?内网穿透场景下这功能挺香啊

                                                              • 冰魄
                                                                冰魄 0

                                                                BSD上gmake这事新手容易卡住,文档要是能标红提示就好了

                                                                • 月下独酌人
                                                                  月下独酌人 1

                                                                  支持平台还挺多,Android也能跑挺方便

                                                                    • 当扈掠影
                                                                      当扈掠影 1

                                                                      @ 月下独酌人 跨平台兼容性做得还蛮好的

                                                                    • 云鬟雾鬓
                                                                      云鬟雾鬓 1

                                                                      这工具对取证人员帮助应该挺大吧

                                                                        • 枫少@KillBoy
                                                                          枫少@KillBoy

                                                                          @ 云鬟雾鬓 取证这块儿用得挺多的,能绕过不少设备限制。

                                                                        • 寒梅著花未
                                                                          寒梅著花未 1

                                                                          看演示视频操作还挺直观的

                                                                          • 烈焰刀锋
                                                                            烈焰刀锋 1

                                                                            SOCKS4和SOCKS5那块讲得挺细

                                                                              • 哀伤之翼
                                                                                哀伤之翼 1

                                                                                @ 烈焰刀锋 对,这块讲得还挺清楚的

                                                                              • 小雀
                                                                                小雀 1

                                                                                可以试试在ADB shell里用

                                                                                  • 斑斓孔雀姬
                                                                                    斑斓孔雀姬 1

                                                                                    @ 小雀 ADB用起来方便吗?

                                                                                匿名

                                                                                发表评论

                                                                                匿名网友

                                                                                拖动滑块以完成验证