-1

我已经sshd在我的计算机(Ubuntu-12.10)中开始让其他 PC(let pc2)通过本地端口转发连接到我的访客帐户中。

现在如何从我的 PC 监控该 pc2 的流量,即他/她正在打开哪个网站或他/她正在下载什么数据以及通过我的计算机的其他流量?

4

4 回答 4

4

您无法“看到”来自 pc2 的流量,因为 ssh 对其进行了加密。但是,您将能够在使用任何隧道流量看到其出站部分,因为这是由本地 sshd 生成的。

使用 lsof 命令,查看当来自 pc2 的用户使用 ssh 连接到您时会发生什么。lsof -i TCP|grep pc2将向您展示类似的内容:-

sshd      14466     root    3u  IPv4 327724762      0t0  TCP pc1:ssh->pc2:40781 (ESTABLISHED)
sshd      19170 pc2user     3u  IPv4 327724762      0t0  TCP pc1:ssh->pc2:40781 (ESTABLISHED)

第一行代表 sshd 服务本身,第二行代表运行 pc2 用户连接的 sshd 部分(Ubuntu 和希望现在其他所有人都默认使用权限分离)。

从这个视图中,您看不到任何端口转发,因为它还没有被使用。但是我们可以使用 pc2user 的 ssh 会话的进程 ID (PID),这里是 19170。我们现在可以lsof再次使用来查看该过程在做什么。lsof -p 19170 -a -i TCP

COMMAND   PID     USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
sshd    19170 pc2user    3u  IPv4 327724762      0t0  TCP pc1:ssh->pc2:40785 (ESTABLISHED)

这应该给你与上面第二行相同的输出;但是当用户开始使用他们声明的端口转发隧道时,你会从这个 PID 中看到它...

COMMAND   PID     USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
sshd    19170 pc2user    3u  IPv4 327724762      0t0  TCP pc1:ssh->pc2:40785 (ESTABLISHED)
sshd    19170 pc2user   10u  IPv4 327873368      0t0  TCP localhost:55678->google.com:http (ESTABLISHED)

一旦检测到第二个连接,您就可以通过指定连接的任一端开始为其收集网络流量:在这里,我们将使用 localhost 端:-

tcpdump -i lo src port 55678

现在您已经看到通过 ssh 传输的流量是如何可见的,您可能需要一种更自动的方法来捕获它。iptables允许我们使用所有者匹配工具匹配来自特定用户的所有流量 - 参见http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#OWNERMATCH

来自 pc2user 的 ssh 连接的所有出站网络流量都将归 pc2user 所有——您可以使用 iptables 在某处记录所有这些,或者决定允许/拒绝什么,或者做其他事情,例如将所有 HTTP 流量推送到特定代理你设置的。

您可能还需要查看 ps2user 的 authorized_keys 文件,您可以在其中使用 permitopen="host:port" 语句控制允许用户首先请求的端口转发。man sshd会在那里帮助你。

于 2013-03-05T03:11:45.850 回答
1

Secure Socket Shell 的重点是加密连接实体之间的流量。它实际上实现了一种协议级别的加密形式。这是使用它的好处之一。

关于您的 SSH,需要注意的是它本身是如何工作的。

尽管它的主要目标是保护数据,但通过 SSH 关联连接的最简单方法就像一系列管道。这些管子包含一个开始,一个结束。

当您创建此隧道时,您指定一个地址和端口,一旦正确握手,它将回复。

SSH 模型视图

如果您有一台位于防火墙后面的机器,则需要该机器通过暴露连接的“远程”端的“入口”点来物理连接到外部世界。

显然,暴露这个端口的好处是更多的项目将开始通过普通的旧文本出现,这公然暴露了任何数据。

现在有不同的工具可以监控此类信息:

  • 网络和协议分析仪
  • 代理服务器

代理服务器:这种可爱的方法旨在接收任何访问您网络的流量;过滤,监控,然后将其传递出去。因此,从某种意义上说,您将能够监控所有传入和传出的流量请求。

连接本身可能是安全的,这将隐藏传输,但代理仍将暴露目标或传入请求。

网络和协议分析器:这些分析器旨在配置为监控网络流量,因此它们将针对针对三件事的每个端口和协议:

  • 服务器
  • 客户
  • 路由器

目标将是监视从机器发送的所有网络数据包,因此一旦填充了该数据包,它将沿 OSI 模型向下移动。现在这些分析器的好处是,它们会将所有需要的信息从一个 IP 暴露给另一个。这些位部分暴露。

对于渗透测试,一种常见的策略是毒化路由器表,一旦它们暴露出来,就很容易拦截这些数据包,然后用不同的信息重新注入它们。

以下是一些网络和协议分析仪:

  • 纳吉奥斯十一世
  • 线鲨

代理:

  • Nginx

安全实用程序:

  • Open Wall,安全站点,其中包含一些可能适用的安全软件实用程序。
  • Antionline,Blackhat - 这些论坛有很多可行的信息。
  • 猫头鹰安全软件
  • 固态混合硬盘
  • FreeBSD --> 有一些内置的 SSH 日志工具。

有很多信息要做,我采取了一些比 Satish 更友好的方法,但你也可以使用不同的攻击变体来获取信息。您可能想尝试的另一件事是渗透测试。其中一些实用程序也将满足您的要求。

希望这至少可以帮助您指出正确的方向。

于 2013-03-04T21:57:55.607 回答
0

简短的回答你不能。ssh 的全部意义在于拥有一个安全(加密)的连接。唯一的方法是通过 pc1 上的 root 帐户监控来宾帐户。您可以通过将来宾配置为使用代理(例如用于 Internet 连接)来做到这一点,并且您可以访问代理的日志。

但是有更简单的方法来做这些事情。

于 2013-02-26T20:49:26.370 回答
0

如果您真的愿意这样做,那么唯一的方法就是Man-In-The-Middle (MITM)攻击。虽然 ssh 会话已加密,但您无法使用嗅探器查看流量,因此您必须以某种方式将其放在attacker machine计算机和 PC2 之间,以便轻松嗅探流量。有一些工具可以帮助您实施 MITM 攻击。

中间人 SSH

使用 libssl 漏洞解密 SSH2 会话

于 2013-03-01T20:49:37.337 回答