安全地试验套接字

信息安全 漏洞扫描器 港口 源代码
2021-09-12 03:28:14

我正在学习 TCP/IP 和 (Berkeley/UNIX) 套接字编程。假设我有两种情况:

1)我用 C 语言编写了两个程序,一个客户端和一个服务器,并将它们各自绑定到同一(Linux)主机上的一个非知名端口,并使用我的(新手)C 技能尝试交换数据。

2) 我在 Linux 上运行服务器,并从位于同一 LAN(在 NAT 之后)的 Windows 上运行客户端。我认为这意味着 Windows 上的端口是“主动打开”的?(请注意,我对 WinSock 或绕过 NAT 一无所知。)

在每种情况下,是否可以想象一些机器人可以在其中一个或两个程序在 NAT 后面运行时扫描开放端口?如果是这样,攻击者是否有办法查看我正在运行的自定义程序的来源并利用滥用的指针、缓冲区溢出等?这是一个家庭网络,没有理由让任何人专门针对它。

1个回答

在尝试客户端/服务器应用程序时,我已经让机器人连接到我的应用程序(不过,仅在众所周知的端口上)。但是,滥用的可能性很小。连接到随机主机的机器人通常首先尝试识别正在运行的应用程序(这将失败,因为没有人知道您的应用程序存在),然后针对该应用程序运行已知的漏洞利用程序(他们不会知道他们从未见过的应用程序的任何漏洞)。

如果您想更加小心(或只是摆脱噪音),您可以将路由器配置为禁用服务器应用程序的端口转发。这样它只能从本地局域网访问。

如果您要非常小心,请使用虚拟化软件在通过虚拟网络进行通信的虚拟机上运行客户端和服务器。

如果你想完全疯狂偏执,请断开客户端和服务器与互联网的连接,并让它们在气隙有线 LAN 上进行通信。

关于您的问题“攻击者是否有办法查看我正在运行的自定义程序的来源”:您是否故意编写了一个程序,该程序用自己的代码响应某些网络消息(即网络quine)?如果不是这样,那么导致这种情况发生的意外错误就不太可能发生,尤其是当您考虑到 C 程序通常在编译后无法再访问自己的代码时。可以想象一个缓冲区溢出漏洞,它会转储应用程序的部分编译代码,但攻击者必须投入大量工作来对其进行逆向工程并找到更多漏洞。而且我怀疑有人会费心投入这么多工作来为一个可能永远不会再运行它的学习者编写一个测试程序。