挑战代理服务器;关于如何防止代理服务器的问题;【XP小猪来看看】

xjb2001 2004-07-19 11:18:55
我原来做了一个拨号上网的软件;是没有防止代理功能的;

现在很多PPPOE,802.1X的拨号软件,都有了防止代理的措施;

比如:禁止双网卡,双IP,禁止安装某些代理服务(SYGAGE,WINGATE)软件;

于是,我也要给拨号软件+防止代理功能;

我的实现方法是:
1、禁止双网卡
2、禁止双IP
3、禁止其他机器有与本机相同的MAC
4、禁止物理网卡转发不是给自己的包

上述方法都是用WINPCAP实现的;

问题出来了,有些地方,用户需要使用VPN这个功能,这样就会建立出一个
虚拟的网卡;
可是,虚拟网卡如果没有被禁用,是会被WINPCAP发现的;
我将禁止用户的拨号;

还有什么方法能够更好的防止代理的现象(当然,前提是不用开发NDIS的
底层驱动啊)?

XP小猪说,WINPCAP不能发现虚拟网卡,其实,是能发现的啊;
只是网卡的说明不同罢了,现在网卡的信息都能被改动了,靠网卡的描述来
区分是否为虚拟网卡,是不可靠的啊;

希望知道这方面信息,对这个防止代理有兴趣的朋友来讨论之;

谢谢了;
...全文
644 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjb2001 2004-07-28
  • 打赏
  • 举报
回复
区分虚拟网卡和物理网卡的方法,我已经得到了;

就是使用OID向网卡发包,根据回复分析之;

genvy(Paul) :
说的太什么那个啊了;
改进软件的功能是义不容辞的;可是限制用户的功能,这就谈不上了;(也许你是个学生,在学校里,被拨号软件限制代理伤害了;)

禁止代理,本身就是为了更好的做好管理;否则,很多网络现象都无法去解释和处理;
何谈网络安全;

从运营的角度,是决不愿意有代理的现象的,那样,他们的收入就直线下降了;这一切都是利益驱使的(就算有些运营商没有禁用代理,他们一样会限制你的带宽);

很多事情,不是主观控制的,完全是顺应趋势的发展;



danielzhu 2004-07-22
  • 打赏
  • 举报
回复
up
自由的风 2004-07-21
  • 打赏
  • 举报
回复
楼上说得很有见地
genvy 2004-07-21
  • 打赏
  • 举报
回复
在网络级别根本不能判断哪个设备是真实的。可以根据设备是否拥有IO资源(比如是否拥有中断请求号)来判断设备是否对应着一个真实的硬件。

另外winpcap是不稳定的。以前做项目用winpcap,结果导致频频死机,后来用softice跟进去查,发现是winpcap的bug。写了个email给开发者,反应倒挺快的,在后面的版本马上改正了。

不过我对阁下的这种做软件的思想是嗤之以鼻的,我极其厌恶憎恨这种限制用户的行为,相信阁下加上这个功能后就没什么人会愿意用你的东西了。不去改进自己的软件却加进一些限制用户自由的功能,真令人恶心。

PiggyXP 2004-07-21
  • 打赏
  • 举报
回复
到这个键值里面看看,也许会有你要的线索,我想根据这些参数是可以区分网卡的

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}

下面的0000,0001,0002。。。。。
danielzhu 2004-07-21
  • 打赏
  • 举报
回复
强贴,学习中...
xjb2001 2004-07-20
  • 打赏
  • 举报
回复
结果出来了

GETADAPTERINFO 虽然能象 IPCONFIG -ALL 一样正确的取得网卡信息
但是,我还是不能区分虚拟网卡和以太网卡

这样的话,我的防代理还是无从下手

因为我要允许用户使用VPN的虚拟网卡

我又不想同时监控2块网卡

头痛;

xjb2001 2004-07-19
  • 打赏
  • 举报
回复
兄弟门,都来发表发表意见吧;
PrettyMurphy 2004-07-19
  • 打赏
  • 举报
回复
关注
xjb2001 2004-07-19
  • 打赏
  • 举报
回复
最简单的防止代理的方法是,监听 80,1080端口的请求,去发现SOCKS和HTTP的代理

可是,现在代理服务软件很多,光这样是不够的;

而且还有双物理网卡的透明代理,想防止真的是¥%……※×()——×%%……

最好的方法还是检测网卡是否转发了其他机器发来的包;

可是,对多网卡的监控的话,会占用一定的内存;而且网卡转发数据,不一定是接收到后
就立刻转发的,可能是有延迟的。。。

真的让我头痛了;

自由的风 2004-07-19
  • 打赏
  • 举报
回复
算了,还是不说什么了 :)
sanyou98 2004-07-19
  • 打赏
  • 举报
回复
up
PiggyXP 2004-07-19
  • 打赏
  • 举报
回复
加是加了,不过没到“放风”时间不敢上QQ

以后叫我“小猪”就好了

暂时还是来这里讨论吧,我都在的:)
xjb2001 2004-07-19
  • 打赏
  • 举报
回复
谢谢猪兄

俺来试试,你+俺啊;

PiggyXP 2004-07-19
  • 打赏
  • 举报
回复
对了,包含这个

#include <Iphlpapi.h>

#pragma comment(lib, "Iphlpapi.lib")
xjb2001 2004-07-19
  • 打赏
  • 举报
回复
说来复杂了

俺们 QQ 或 MSN 聊之?

QQ:14454667

MSN:xjb2001@hotmail.com
PiggyXP 2004-07-19
  • 打赏
  • 举报
回复
我的电脑上也有\Device\NPF_GenericNdisWanAdapter,但是我没有装pppoe拨号软件-_-b

那你试试这个,我刚刚又试了一下,用GetAdaptersInfo就不会枚举到NPF_GenericNdisWanAdapter

char tempChar;
ULONG uListSize=1;
PIP_ADAPTER_INFO pAdapter;

int nAdapterIndex = 0;

DWORD dwRet = GetAdaptersInfo((PIP_ADAPTER_INFO)&tempChar, &uListSize);

if (dwRet == ERROR_BUFFER_OVERFLOW)
{
PIP_ADAPTER_INFO pAdapterListBuffer = (PIP_ADAPTER_INFO)new(char[uListSize]);
dwRet = GetAdaptersInfo(pAdapterListBuffer, &uListSize);
if (dwRet == ERROR_SUCCESS)
{
pAdapter = pAdapterListBuffer;
while (pAdapter) // 枚举网卡然
{

CString strTemp =
pAdapter->AdapterName; // 网卡名字


pAdapter = pAdapter->Next;

nAdapterIndex ++;
}
delete pAdapterListBuffer;
}
}

你试一下最后的nAdapterIndex是否是真实网卡的数量?
PiggyXP 2004-07-19
  • 打赏
  • 举报
回复
但是用捕获数据包要把网卡设置为混杂模式,

这就会给主机带来大量不必要的网络开销,会直接增加主机负担的
xjb2001 2004-07-19
  • 打赏
  • 举报
回复
和我同样主板的同事(我们都是内置网卡),机器装了WINPCAP就没有出现这个东西的;
\Device\NPF_GenericNdisWanAdapter
Generic NdisWan adapter

这个是PPPOE弄出来的东西;

用NETBIOS的方法,如果我存在上面说的网卡,得到的网卡数是6,一共能得到3个不同
的MAC地址;

而和我同样系统和主板的同事,他却只会获得一个网卡数(他是没有装PPPOE的);
xjb2001 2004-07-19
  • 打赏
  • 举报
回复
3、禁止其他机器有与本机相同的MAC
如果用户使用HUB,修改HUB下所有机器的MAC相同;
那样的话,只要一个机器认证成功了,其他机器都能不认证上网了;
因为所有用户都能收到HUB发的包啊;

4、禁止物理网卡转发不是给自己的包
我捕获目的MAC是自己,但是目的IP不是自己的包,并保存;
如果10秒内,这样的IP我也去访问,我就认为是转发了;
我会切断连接的;

而且要捕获以太包,不装WINPCAP就要做底层驱动;
没有办法啊;反正是打包安装的;装了以后用户也不会管了;

我用WINPCAP就是监听分析用的,我不打算截断用户的包;
我只要分析出现象,然后切断连接就好了;




加载更多回复(8)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧