什么是动态链接库?*
Z\0wQ;} 7J9<B5U 一、动态链接库的概念
upMs yLp( 动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。
\n}%RD-Ce 7{r7 动态链接是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。
Mc?_2<u- ! Vl)aL 一般情况下,如果一个应用程序使用了动态链接库,Win32系统保证内存中只有DLL的一份复制品,这是通过内存映射文件实现的。DLL首先被调入Win32系统的全局堆栈,然后映射到调用这个DLL的进程地址空间。在Win32系统中,每个进程拥有自己的32位线性地址空间,如果一个DLL被多个进程调用,每个进程都会收到该DLL的一份映像。与16位Windows不同,在Win32中DLL可以看作是每个进程自己的代码。
`Am|9LOT )a^&7 二、动态链接库的优点
ub?dfS9$_ Y$OE[nGi%X 1. 共享代码、资源和数据
R*6TS"aL O]IAIM 使用DLL的主要目的就是为了共享代码,DLL的代码可以被所有的Windows应用程序共享。
IR"C? FO>?>tK 0 2. 隐藏实现的细节
U%Fa.bL~ D?BegF DLL中的例程可以被应用程序访问,而应用程序并不知道这些例程的细节。
>_Tyzl>z l(1.Ll
3. 拓展开发工具如Delphi的功能
%0&,_jM/9 [Vbdsu9 由于DLL是与语言无关的,因此可以创建一个DLL,被C++、VB或任何支持动态链接库的语言调用。这样如果一种语言存在不足,就可以通过访问另一种语言创建的DLL来弥补。
V'b4wO1RV d\-*Fmp(S 三、动态链接库的实现方法
WReHep /Igz[P^\9 1. Load-time Dynamic Linking
2?qT,pN o5]-Kuw` 这种用法的前提是在编译之前已经明确知道要调用DLL中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不含DLL函数的代码;当程序执行时,利用链接信息加载DLL函数代码并在内存中将其链接入调用程序的执行空间中,其主要目的是便于代码共享。
odL*_<Z V1,p<>9 2. Run-time Dynamic Linking
U^}7DJ hcW>R 这种方式是指在编译之前并不知道将会调用哪些DLL函数,完全是在运行过程中根据需要决定应调用哪个函数,并用LoadLibrary和GetProcAddress动态获得DLL函数的入口地址。
"uplk8iCJ .8'c
c8 [$} \Gv r5Q#GY> 教你认识动态链接库DLL文件
zjH8S |a)zuC g\B ?
|% DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下。
}S*]#jr& BJ_"FG ]fDb|s48 1、如何了解某应用程序使用哪些DLL文件
%4R1rUrgt| Ca5LLG 右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。
mCn:{G8+ 07=I&Pum 2、如何知道DLL文件被几个程序使用
M]%dFQ O:'qwJ#~ 运行Regedit,进入HKEY_LOCAL_MACHINESoftwareMicrosrftWindowsCurrent-
O=LW[h! VersionSharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。
\>9^(N 4YY!oDN: 3、如何解决DLL文件丢失的情况
"C3J[) qC Y4N7# 5 有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。
+mft nWc@ufY 什么是ARP欺骗 ?*
7z{N} }T PyHq" 我们先复习一下上面所讲的ARP协议的原理。在实现TCP/IP协议的网络环境下,一个ip包走到哪里,要怎么走是@@路由表定义,但是,当ip包到达该网络后,哪台机器响应这个ip包却是@@该ip包中所包含的硬件mac地址来识别。也就是说,只有机器的硬件mac地址和该ip包中的硬件mac地址相同的机器才会应答这个ip包,因为在网络中,每一台主机都会有发送ip包的时候,所以,在每台主机的内存中,都有一个 arp--> 硬件mac 的转换表。通常是动态的转换表(该arp表可以手工添加静态条目)。也就是说,该对应表会被主机在一定的时间间隔后刷新。这个时间间隔就是ARP高速缓存的超时时间。
tYgHJ~1L* !Mgo~h"]# 通常主机在发送一个ip包之前,它要到该转换表中寻找和ip包对应的硬件mac地址,如果没有找到,该主机就发送一个ARP广播包,于是,主机刷新自己的ARP缓存。然后发出该ip包。
4C?4M; ;Y8>? 了解这些常识后,现在就可以谈在以太网络中如何实现ARP欺骗了,可以看看这样一个例子。
n5oX 51J 同一网段的ARP欺骗
wQ/.3V[ o[RwK 同一网段的ARP欺骗
?v:FGO 9,&xG\z= 图2 同一网段的arp欺骗
BK)<~I }tBw<7fe 如图2所示,三台主机
b)#rUI|O A: ip地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA
[zq2h3r B: ip地址 192.168.0.2 硬件地址 BB:BB:BB:BB:BB:BB
;xUo(^t7> C: ip地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC
CY.92I@S >S0kiGDV{ 一个位于主机B的入侵者想非法进入主机A,可是这台主机上安装有防火墙。通过收集资料他知道这台主机A的防火墙只对主机C有信任关系(开放23端口(telnet))。而他必须要使用telnet来进入主机A,这个时候他应该如何处理呢?
F+NX
[ L%3Bp/`S 我们这样考虑,入侵者必须让主机A相信主机B就是主机C,如果主机A和主机C之间的信任关系是建立在ip地址之上的。如果单单把主机B的ip地址改的和主机C的一样,那是不能工作的,至少不能可@@地工作。如果你告诉以太网卡设备驱动程序, 自己IP是192.168.0.3,那么这只是一种纯粹的竞争关系,并不能达到目标。我们可以先研究C这台机器如果我们能让这台机器暂时当掉,竞争关系就可以解除,这个还是有可能实现的。在机器C当掉的同时,将机器B的ip地址改为192.168.0.3,这样就可以成功的通过23端口telnet到机器A上面,而成功的绕过防火墙的限制。
R'vNJDFY vgDpo@fz8 上面的这种想法在下面的情况下是没有作用的,如果主机A和主机C之间的信任关系是建立在硬件地址的基础上。这个时候还需要用ARP欺骗的手段让主机A把自己的ARP缓存中的关于192.168.0.3映射的硬件地址改为主机B的硬件地址。
j( k%w l{]KA4 我们可以人为的制造一个arp_reply的响应包,发送给想要欺骗的主机,这是可以实现的,因为协议并没有规定必须在接收到arp_echo后才可以发送响应包.这样的工具很多,我们也可以直接用snifferpro抓一个arp响应包,然后进行修改。
=z"8#_3A p{v*/<.; 你可以人为地制造这个包。可以指定ARP包中的源IP、目标IP、源MAC地址、目标MAC地址。
)FG/ 这样你就可以通过虚假的ARP响应包来修改主机A上的动态ARP缓存达到欺骗的目的。
_iDVd2X"H 下面是具体的步骤:
1M_Vhs^ 1. 他先研究192.0.0.3这台主机,发现这台主机的漏洞。
hbr3.<o1lY 2. 根据发现的漏洞使主机C当掉,暂时停止工作。
{jwLVKT$ 3. 这段时间里,入侵者把自己的ip改成192.0.0.3
\Wg_ gA 4. 他用工具发一个源ip地址为192.168.0.3源MAC地址为BB:BB:BB:BB:BB:BB的包给主机A,要求主机A更新自己的arp转换表。
z6;hFcO 5. 主机更新了arp表中关于主机C的ip-->mac对应关系。
QBi]gT@&g 6. 防火墙失效了,入侵的ip变成合法的mac地址,可以telnet 了。
$B<:SuV# 5}_=q;sZ 上面就是一个ARP的欺骗过程,这是在同网段发生的情况,但是,提醒注意的是,在B和C处于不同网段的时候,上面的方法是不起作用的。
VpB)5> Z]tQmV8e 不同网段的ARP欺骗
X<$DNRN bWlYQ
不同网段的ARP欺骗
? EHheZ{ |N)),/R_ >!lpI5'Z& 不同网段之间的ARP欺骗
]xoG{%vgb z$d<ep{6 如图3所示A、C位于同一网段而主机B位于另一网段,三台机器的ip地址和硬件地址如下:
.9r85 A: ip地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA
l\Ww^ B: ip地址 192.168.1.2 硬件地址 BB:BB:BB:BB:BB:BB
%\|{_]h}y C: ip地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC
/J!:_Nq r_,;[+! 在现在的情况下,位于192.168.1网段的主机B如何冒充主机C欺骗主机A呢?显然用上面的办法的话,即使欺骗成功,那么由主机B和主机A之间也无法建立telnet会话,因为路由器不会把主机A发给主机B的包向外转发,路由器会发现地址在192.168.0.这个网段之内。
P zM yUv kw#-\RR_c 现在就涉及到另外一种欺骗方式―ICMP重定向。把ARP欺骗和ICMP重定向结合在一起就可以基本实现跨网段欺骗的目的。
WcM\4q@ Z^'\()3t 什么是ICMP重定向呢?
}a9G,@:k KUm?gFh ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据报向它的目的地转发。我们可以利用ICMP重定向报文达到欺骗的目的。
%yjD<2J; Y.tT#J^= 下面是结合ARP欺骗和ICMP重定向进行攻击的步骤:
ITn PF{N 1. 为了使自己发出的非法ip包能在网络上能够存活长久一点,开始修改ip包的生存时间ttl为下面的过程中可能带来的问题做准备。把ttl改成255. (ttl定义一个ip包如果在网络上到不了主机后,在网络上能存活的时间,改长一点在本例中有利于做充足的广播)
T*=*$% 2. 下载一个可以自由制作各种包的工具(例如hping2)
liLhvcd 3. 然后和上面一样,寻找主机C的漏洞按照这个漏洞当掉主机C。
(C).Vj~ 4. 在该网络的主机找不到原来的192.0.0.3后,将更新自己的ARP对应表。于是他发送一个原ip地址为192.168.0.3硬件地址为BB:BB:BB:BB:BB:BB的ARP响应包。
Gky^S# 5. 好了,现在每台主机都知道了,一个新的MAC地址对应192.0.0.3,一个ARP欺骗完成了,但是,每台主机都只会在局域网中找这个地址而根本就不会把发送给192.0.0.3的ip包丢给路由。于是他还得构造一个ICMP的重定向广播。
fn5-Tnsq* 6. 自己定制一个ICMP重定向包告诉网络中的主机:"到192.0.0.3的路由最短路径不是局域网,而是路由,请主机重定向你们的路由路径,把所有到192.0.0.3的ip包丢给路由。"
g3{UP]Z71 7. 主机A接受这个合理的ICMP重定向,于是修改自己的路由路径,把对192.0.0.3的通讯都丢给路由器。
1 JIU5u) 8. 入侵者终于可以在路由外收到来自路由内的主机的ip包了,他可以开始telnet到主机的23口。
XQfmD;U mK"s*tD 其实上面的想法只是一种理想话的情况,主机许可接收的ICMP重定向包其实有很多的限制条件,这些条件使ICMP重定向变的非常困难。
~Fwbi )$df6sq TCP/IP协议实现中关于主机接收ICMP重定向报文主要有下面几条限制:
|KS,k|). 1. 新路由必须是直达的
0x]?rd+q8Q 2. 重定向包必须来自去往目标的当前路由
V?wV*]c 3. 重定向包不能通知主机用自己做路由
$7g+/3Fu^ 4. 被改变的路由必须是一条间接路由
BbCO K x{<l8vL=-c 由于有这些限制,所以ICMP欺骗实际上很难实现。但是我们也可以主动的根据上面的思维寻找一些其他的方法。更为重要的是我们知道了这些欺骗方法的危害性,我们就可以采取相应的防御办法。
NT5'U a@qc? ^i!6z2/ p)?6#~9$ 什么是网络钓鱼?*
&{+ 0a[rN sO6=w%l^ Phishing即网络钓鱼。“Phishing”与“Fishing”发音相同,是常见的网络诈欺行为。通常利用电子邮件引诱用户到伪装网站,以套取用户的个人资料如信用卡号码。
E0&d*BI2 “Phishing”该词嫁接了fishing和phone,该词起源于1996年左右,黑客起初利用电子邮件作为诱饵,盗用美国在线的帐号和密码,后来鉴于最早的黑客是用电话线作案,所以黑客们常常用Ph来取代f,就形成了今天的Phishing一词。
nQ_{IO8/6W 五种“网络钓鱼”实例解析及防范技巧
]Zc|<f; kC
6*An_f 目前,网上一些利用“网络钓鱼”手法,如建立假冒网站或发送含有欺诈信息的电子邮件,盗取网上银行、网上证券或其他电子商务用户的账户密码,从而窃取用户资金的违法犯罪活动不断增多。
09G47YkSy1 7X/t2Vih@ “网络钓鱼”的主要手法
\#I$H9O y*-_ 一、是发送电子邮件,以虚假信息引诱用户中圈套
2@GizT*mA pWJEFm 诈骗分子以垃圾邮件的形式大量发送欺诈性邮件,这些邮件多以中奖、顾问、对帐等内容引诱用户在邮件中填入金融账号和密码,或是以各种紧迫的理由要求收件人登录某网页提交用户名、密码、身份证号、信用卡号等信息,继而盗窃用户资金。
S**eI<QFSk ]- `wXi" 如今年2月份发现的一种骗取美邦银行(Smith Barney)用户的帐号和密码的“网络钓鱼”电子邮件,该邮件利用了IE的图片映射地址欺骗漏洞,并精心设计脚本程序,用一个显示假地址的弹出窗口(如下图红色框)遮挡住了IE浏览器的地址栏,使用户无法看到此网站的真实地址。当用户使用未打补丁的Outlook打开此邮件时,状态栏显示的链接是虚假的。
(4A'$O2 X|eZpIA45 当用户点击链接时,实际连接的是钓鱼网站http://**.41.155.60:87/s。该网站页面酷似Smith Barney银行网站的登陆界面,而用户一旦输入了自己的帐号密码,这些信息就会被黑客窃取。
E
BBd V8TdtGB.|h 二、是建立假冒网上银行、网上证券网站,骗取用户帐号密码实施盗窃
~tW~%]bs2Q %%uE^nX> 犯罪分子建立起域名和网页内容都与真正网上银行系统、网上证券交易平台极为相似的网站,引诱用户输入账号密码等信息,进而通过真正的网上银行、网上证券系统或者伪造银行储蓄卡、证券交易卡盗窃资金;还有的利用跨站脚本,即利用合法网站服务器程序上的漏洞,在站点的某些网页中插入恶意Html代码,屏蔽住一些可以用来辨别网站真假的重要信息,利用cookies窃取用户信息。
gC/ e]7FNr K SOD( 如曾出现过的某假冒银行网站,网址为
http://www.1cbc.com.cn,而真正银行网站是
http://www.icbc.com.cn,犯罪分子利用数字1和字母i非常相近的特点企图蒙蔽粗心的用户。
TSsZzsdr2 zN|k*}j1J 又如2004年7月发现的某假公司网站(网址为
http://www.1enovo.com),而真正网站为
http://www.lenovo.com,诈骗者利用了小写字母l和数字1很相近的障眼法。诈骗者通过QQ散布“XX集团和XX公司联合赠送QQ币”的虚假消息,引诱用户访问。
oR=i5lAU z"UC$ 一旦访问该网站,首先生成一个弹出窗口,上面显示“免费赠送QQ币”的虚假消息。而就在该弹出窗口出现的同时,恶意网站主页面在后台即通过多种IE漏洞下载病毒程序lenovo.exe(TrojanDownloader.Rlay),并在2秒钟后自动转向到真正网站主页,用户在毫无觉察中就感染了病毒。
'= fk;AiQ rHX^bcYK 病毒程序执行后,将下载该网站上的另一个病毒程序bbs5.exe,用来窃取用户的传奇帐号、密码和游戏装备。当用户通过QQ聊天时,还会自动发送包含恶意网址的消息。
=huV(THU #m{*]mY@ 三、是利用虚假的电子商务进行诈骗
xV5UaD< NBc^(F" 此类犯罪活动往往是建立电子商务网站,或是在比较知名、大型的电子商务网站上发布虚假的商品销售信息,犯罪分子在收到受害人的购物汇款后就销声匿迹。如2003年,罪犯佘某建立“奇特器材网”网站,发布出售间谍器材、黑客工具等虚假信息,诱骗顾主将购货款汇入其用虚假身份在多个银行开立的帐户,然后转移钱款的案件。
KBN% TqH| L8PX SJ 除少数不法分子自己建立电子商务网站外,大部分人采用在知名电子商务网站上,如“易趣”、“淘宝”、“阿里巴巴”等,发布虚假信息,以所谓“超低价”、“免税”、“走私货”、“慈善义卖”的名义出售各种产品,或以次充好,以走私货充行货,很多人在低价的诱惑下上当受骗。网上交易多是异地交易,通常需要汇款。不法分子一般要求消费者先付部分款,再以各种理由诱骗消费者付余款或者其他各种名目的款项,得到钱款或被识破时,就立即切断与消费者的联系。
e:9EP, qVE0[ve 四、是利用木马和黑客技术等手段窃取用户信息后实施盗窃活动
TI<
x;p *<