如何检查套接字连接的目标?

时间:2009-08-10 16:59:18

标签: unmanaged winsock

例如,如果我编译的应用程序中的套接字设计为连接到123.456.789.0。 如何检查它是否连接到123.456.789.0?有没有办法做到这一点?

我的想法是:我想阻止其他人编辑我的程序并将地址更改为例如127.0.0.1并使其通过代理进行连接。

连接套接字后是否有任何函数/方法/技巧来检查地址?

2 个答案:

答案 0 :(得分:4)

使用getpeername功能检索远程主机的地址。

如果有人像你提到的那样编辑你的程序,他们也可能会改变这样的检查。

答案 1 :(得分:3)

nos 关于这种方法的不安全性的评论是正确的,但不完整。您甚至不需要更改程序的代码来规避您提出的机制。

最简单的方法是在机器的一个网络接口上添加IP别名。然后程序可以绑定到程序连接的端口上的该接口,操作系统的网络堆栈将很乐意发送连接到攻击者的本地程序,而不是远程程序。

所以,现在你说你想知道如何列出计算机的接口,以便你可以检测到这种颠覆。您的对手反击,在安装Winsock挂钩后启动您的程序作为他们的子流程,Winsock挂钩通过父进程回调Winsock回调。

然后我们期望您找到如何阅读加载到您的进程空间的特定DLL的可执行代码部分,以便您可以检查代码是否符合您的预期。现在你的对手掉落了Winsock垫片,切换到NDIS层过滤器,在程序到达NIC之前重写程序中的数据包。

接下来,我们发现您正在寻找告诉如何列出Windows系统上安装的驱动程序的人员,因此您可以检查其中一个过滤器是否存在。你的对手认为大约6秒钟并且决定开始使用数据包路由,选择至少三种不同的攻击中的一种,我可以想到这一点。 (不,等等,四个。)

我不是安全专家。然而,我已经花了五分钟时间,已经让你的安全性有七种不同的方式。

你注定了吗?也许,也许不是。

您可以更好地发布一个新问题,说明您要保护的内容,并让专家对风险和可能的修复进行评论,而不是您想要了解您可以看到的风险。 (请勿在此处添加。您的问题已经通过 nos 正确回答。这是一个不同的问题。)

安全很难。专业知识在该学科中的重要性远远超过大多数其他计算机科学领域。