cmd命令详解2006

更新时间:2024-04-09 14:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

cmd命令详解2006-10-16 19:27一、ping命令

在Windows的控制窗口中(Windows 95/98/ME的command解释器、Windows NT/2000的cmd解释器),运行ping可以看到这个命令的说明,它是一个探测本地电脑和远程电脑之间信息传送速度的命令,这个命令需要TCP/IP协议的支持,ping将会计算一条信息从本地发送到远程再返回所需要的时间,黑客使用这个命令决定是否对服务器进行攻击,因为连接速度过慢会浪费时间、花费过多的上网费用。

另外这个命令还可以透过域名找到对方服务器的IP地址,我们知道域名只是提供给浏览网页用的,当我们看到一个不错的域名地址后,要想通过telnet连接它,就必须知道对方的IP地址,这里也要使用ping命令的。

这个命令的基本使用格式可以通过直接运行ping获得,现在假设目标是http://www.abc.com/,则可以在控制台下输入ping www.abc.com,经过等待会得到如下信息:

Pinging www.abc.com [204.202.136.32] with 32 bytes of data:

Reply from 204.202.136.32: bytes=32 time=302ms TTL=240

Reply from 204.202.136.32: bytes=32 time=357ms TTL=240

Reply from 204.202.136.32: bytes=32 time=288ms TTL=240

Reply from 204.202.136.32: bytes=32 time=274ms TTL=240

Ping statistics for 204.202.136.32:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 274ms, Maximum = 357ms, Average = 305ms

这些信息的意思是:www.abc.com的IP地址是204.202.136.32,对他发送了四次数据包,数据包的大小是32字节,每一次返回的时间分别是302ms、357ms、288ms、274ms。综合看,发送了四个数据包全部返回,最小时间是274ms,最大时间357ms,他们的平均时间是305ms。

这样黑客就了解了连接对方服务器使用的时间。另外这个命令还有一些特殊的用法,例如可

以通过IP地址反查服务器的NetBIOS名,现在以211.100.8.87为例,使用ping配合“-a”,在控制台下输入命令ping -a 211.100.8.87,它的返回结果是:

Pinging POPNET-FBZ9JDFV [211.100.8.87] with 32 bytes of data:

Reply from 211.100.8.87: bytes=32 time=96ms TTL=120

Reply from 211.100.8.87: bytes=32 time=110ms TTL=120

Reply from 211.100.8.87: bytes=32 time=110ms TTL=120

Reply from 211.100.8.87: bytes=32 time=109ms TTL=120

Ping statistics for 211.100.8.87:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 96ms, Maximum = 110ms, Average = 106ms

从这个结果会知道服务器的NetBIOS名称是POPNET-FBZ9JDFV。另外在一般情况下还可以通过ping对方让对方返回给你的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,例如上面的www.abc.com返回的TTL是240,对方的系统很可能是Linux,而第二个目标的TTL是120,那么说明它使用的系统也许是Windows。

另外ping还有很多灵活的应用,我不在这里过多的介绍,读者请另行查阅此命令相关帮助文件。

二、net命令:

NET命令是很多网络命令的集合,在Windows ME/NT/2000内,很多网络功能都是以net命令为开始的,通过net help可以看到这些命令的详细介绍:

NET CONFIG 显示系统网络设置

NET DIAG 运行MS的DIAGNOSTICS程序显示网络的DIAGNOSTIC信息

NET HELP 显示帮助信息

NET INIT 不通过绑定来加载协议或网卡驱动

NET LOGOFF 断开连接的共享资源

NET LOGON 在WORKGROUP中登陆

NET PASSWORD 改变系统登陆密码

NET PRINT 显示或控制打印作业及打印队列

NET START 启动服务,或显示已启动服务的列表

NET STOP 停止网络服务

NET TIME 使计算机的时钟与另一台计算机或域的时间同步

NET USE 连接计算机或断开计算机与共享资源的连接,或显示计算机的连接信息

NET VER 显示局域网内正在使用的网络连接类型和信息

NET VIEW 显示域列表、计算机列表或指定计算机的共享资源列表

这些命令在Win95/98中支持的比较少,只有几个基本常见的,而在NT或者2000中又元元多于上面的介绍,不过大多数对于初学者也没有必要掌握,所以我选择了WindowsME进行介绍,其中最常用到的是NET VIEW和NET USE,通过者两个命令,学习者可以连接网络上开放了远程共享的系统,并且获得资料。这种远程共享本来是为便捷操作设计的,但是很多网络管理员忽视了它的安全性,所以造成了很多不应该共享的信息的暴露,对于学习者来说,则可以轻易获得它人电脑上的隐私资料。

例如在控制台下输入net view \\\\202.96.50.24则可以获得对应IP的系统共享目录,进而找到他们的共享文件,当然这需要202.96.50.24系统的确存在共享目录,具体如何找到这些存在共享的系统,我将会在后面的文章中进行介绍。

三、telnet和ftp命令:

这两个命令分别可以远程对系统进行telnet登陆和ftp登陆,两种登陆使用的不同的协议,分别属于两种不同的网络服务,ftp是远程文件共享服务,也就是说学习者可以将自己的资料上传、下载,但是它并没有过多的权利,无法在远程电脑上执行上传的文件;而telnet则属于远程登陆服务,也就是说可以登陆到远程系统上,并获得一个解释器权限,拥有解释器就意味着拥有了一定的权限,这种权限可能是基本的文件操作、也可能是可以控制系统的管

理员权限。

四、netstat命令:

这个程序有助于我们了解网络的整体使用情况。它可以显示当前正在活动的网络连接的详细信息,如采用的协议类型、当前主机与远端相连主机(一个或多个)的IP地址以及它们之间的连接状态等。使用netstat ?可以显示它的命令格式和参数说明:

netstat [-a] [-e] [-n] [-s] [-p proto] [-r] [interval] 其中的参数说明如下:

-a 显示所有主机的端口号;

-e 显示以太网统计信息;

-n 以数字表格形式显示地址和端口;

-p proto 显示特定的协议的具体使用信息;

-r 显示本机路由表的内容;

-s 显示每个协议的使用状态(包括TCP、UDP、IP);

interval 重新显示所选的状态,每次显示之间的间隔数(单位秒)。

netstat命令的主要用途是检测本地系统开放的端口,这样做可以了解自己的系统开放了什么服务、还可以初步推断系统是否存在木马,因为常见的网络服务开放的默认端口轻易不会被木马占用,例如:用于FTP(文件传输协议)的端口是21;用于TELNET(远程登录协议)的端口是23;用于SMTP(邮件传输协议)的端口是25;用于DNS(域名服务,即域名与IP之间的转换)的端口是53;用于HTTP(超文本传输协议)的端口是80;用于POP3(电子邮件的一种接收协议)的端口是110;WINDOWS中开放的端口是139,除此以外,如果系统中还有其他陌生的到口,就可能是木马程序使用的了。通过netstat或者netstat -a可以观察开放的端口,如果发现下面的端口,就说明已经有木马程序在系统中存在:

31337号端口是BackOffice木马的默认端口;1999是Yai木马程序;2140或者3150都是DEEP THROAT木马使用的端口;还有NETBUS、冰河或者SUB7等木马程序都可以自定义端口,因此发现了陌生端口一定要提高警惕,使用防火墙或者查病毒软件进行检测。

五、tracert命令:

这个命令的功能是判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点清单和到达时间。tracert命令的格式如下:

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name

命令行中的参数-d是要求tracert不对主机名进行解析,-h是指定搜索到目的地址的最大轮数,-j的功能是沿着主机列表释放源路由,-w用来设置超时时间间隔。

通过tracert可以判断一个服务器是属于国内还是国际(网络服务器的物理未知不能依靠域名进行判断),根据路由路经可以判断信息从自己的系统发送到网络上,先后经过了哪些IP到大对方服务器,这就好像乘公共汽车的时候从起点出发到达终点站的时候,中途会出现很多路牌一个道理,我们清楚了自己的信息的传送路径,才能够更清晰的了解网络、对服务器进行攻击。

六、winipcfg:

winipcfg和ipconfig都是用来显示主机内IP协议的配置信息。只是winipcfg适用于Windows 95/98,而ipconfig适用于Windows NT。winipcfg不使用参数,直接运行它,它就会采用Windows窗口的形式显示具体信息。这些信息包括:网络适配器的物理地址、主机的IP地址、子网掩码以及默认网关等,点击其中的“其他信息”,还可以查看主机的相关信息如:主机名、DNS服务器、节点类型等。其中网络适配器的物理地址在检测网络错误时非常有用。

ipconfig的命令格式如下:ipconfig [/? | /all | /release [adapter] | /renew [adapter]]

其中的参数说明如下:

使用不带参数的ipconfig命令可以得到以下信息:IP地址、子网掩码、默认网关。而使用ipconfig

/? 显示ipconfig的格式和参数的英文说明;

/all 显示所有的配置信息;

/release 为指定的适配器(或全部适配器)释放IP地址(只适用于DHCP);

/renew 为指定的适配器(或全部适配器)更新IP地址(只适用于DHCP)。

/all,则可以得到更多的信息:主机名、DNS服务器、节点类型、网络适配器的物理地址、主机的IP地址、子网掩码以及默认网关等。

(一)at:排定在特定的日期和时间运行某些命令和程序。

所对应的服务是schedule,如果没有开启,可以在cmd下输入 net start schedule 开启

运行 AT 命令之前必须先启动 Schedule 服务。瞧,现炒就得现卖,刚学了net命令,但这个start命令我

可没详述,自已看看帮助文件,摸索一下各种命令的用法吧。

C:\\>net start schedule

Schedule 正在启动服务.....

Schedulw 服务启动成功。

AT [computername] [ [id] [/DELETE] /DELETE [/YES]]

AT [computername] time [/INTERACTIVE] [/EVERY:date[,...] /NEXT:date[,...]]

\

computername 指定远程计算机。如果省略这个参数,命令会被排定在本机上运行。

id 指定给排定进度命令的识别号。

/delete 删除某个已排定进度的命令。如果省略标识,计算机上所有已排定进度的命令都会被删除。

/yes 用于删除所有作业,且不想在运行删除时显示确认信息 。

time 指定命令运行的时间。

/interactive 允许作业在运行时,与用户通过桌面交互。

/every:date[,...] 指定在每周或每月的某日 (或某几日)运行命令。

如果省略日期,则默认为在每月的本日运行。

/next:date[,...] 指定在下一个指定日期(如,下周三),运行命令。如果省略日期,

则默认为

在每月的本日运行,如果是下午要写成14:00这样。

准备运行的 Windows NT 命令或批处理文件。

知道了如何使用AT,再来看看如何在远程NT上运行ntsrv.exe:

1 利用管理员登陆到目的服务器,方法为: net use \\\\x.x.x.x\\\\ipc$ \/user:\

2 利用ntsrv.exe启动远程: netsvc x.x.x.x schedule /start

3 利用AT.EXE在远程服务器设置程序定时运行,当然最快运行最理想,所以,你可以用letmein.exe得到

服务器的时间,然后:

at x.x.x.x 00:00 ntsrv.exe /port:64321

其中00:00要改为用letmein.exe得回来的具体时间+一点容量,等一会后,再在本地启动netbus.exe,键入目的服务器得ip地址或hostname,连接”热绲谝恢址椒ǎ阆胍谀康姆务器运行诸如病毒之类的东东,可以利用netbus得上传功能,将各种“大补丸”上传至目的服务器,再用netbus的\program\,键入完整路径,就ok了!第二种方法是利用netbus的“App redirect”功能,启动远程telnet服务,如下:在netbus中击“App redirect”,键入\,Port为:4321,服务就启动了,然后在本地运行:nc x.x.x.x 4321,出现dos启动的画面就表示连接成功:

Microsoft(R) Windows NT(TM) (C) Copyright 1985-1996 Microsoft Corp. C:\\>

(二)attrib:

这个命令是设置文件属性的。attrib -r abc.exe,这个命令是把abc.exe的只读属性去掉。

+ 设置属性

- 清除属性

R 只读文件属性

A 存档文件属性

S 系统文件属性

H 隐藏文件属性

(三)FTP命令

(1)参见参数

开始-运行 里输入ftp后就可以使用下面的命令了:

1. open:与ftp服务器相连接;

2. send(put):上传文件;

3. get:下载文件;

4. mget:下载多个文件;

5. cd:切换目录;

6. dir:查看当前目录下的文件;

7. del:删除文件;

8. bye:中断与服务器的连接。

(2)参见返回数值

150 文件状态良好,打开数据连接

200 命令成功

202 命令未实现

211 系统状态或系统帮助响应

212 目录状态

213 文件状态

214 帮助信息,信息仅对人类用户有用

215 名字系统类型

220 对新用户服务准备好

221 服务关闭控制连接,可以退出登录

225 数据连接打开,无传输正在进行

226 关闭数据连接,请求的文件操作成功

227 进入被动模式

230 用户登录

250 请求的文件操作完成

257 创建\

331 用户名正确,需要口令

332 登录时需要帐户信息

350 请求的文件操作需要进一步命令

421 连接用户过多

425 不能打开数据连接

426 关闭连接,中止传输

450 请求的文件操作未执行

451 中止请求的操作:有本地错误

452 未执行请求的操作:系统存储空间不足

500 格式错误,命令不可识别

501 参数语法错误

502 命令未实现

503 命令顺序错误

504 此参数下的命令功能未实现

530 账号或密码错误

532 存储文件需要帐户信息

550 未执行请求的操作

551 请求操作中止:页类型未知

552 请求的文件操作中止,存储分配溢出

553 未执行请求的操作:文件名不合法

(四)SC

我们知道在MStools SDK,也就是在Resource Kit有一个很少有人知道的命令行软件,SC.exe,这个软件向所有的Windows NT和Windows 2000要求控制他们的API函数。我们可以在命令行里通过对这些函数设定参数的方式来设定他们(API)。SC.exe也可以显示服务的状态,同时也可以从状态结构区域里重新找到存储在里面的数值。它还可以列出远程计算机的服务函数或者是服务状况结构。SC.exe这个开发工具至少可以比服务控制面板程序和网络命令行界面(net.exe,这个东西可以告诉你一个服务是在运行中,还是停止,还是暂停。)这两个东西提供更多的细节和准确的信息。虽然上述两个东西在正常工作的情况下,对于完整的调试是非常好用的,但是如果有新的服务,或者新的代码被开发出来的时候,这两个工具提供的信息可能造成误导。这也就是我们需要用到SC的原因。

下面举列说明,如果在开发阶段,你的服务在挂住在一个start-pending的时候,控制面板和net.exe同样报告服务是在运行的。但它挂在一个stop-pending的时候,net.exe报告它运行,而控制面板着报告它停止,如果你试着启动它,这是控制面板则会告诉你这个服务正在运行。难道这不是很困惑吗?呵呵!

SC.exe可以让你询问服务的状况和取出存储在状态结构区域内的数值,控制面板和net.exe不提供服务完整的状况。但是无论如何,SC程序可以告诉你这个服务准确的情形,同样也可以给你看最后的checkpoint数和等待提示。这个checkpoint,我叫它检查点(我觉得他就像一个程序调试时置的断点),所以我们也可以把看作为一个试工具,因为它可以提供一个关于在程序停止时还要沿着初始化继续前进多久准确报告。SC.exe也可

以允许你调用很多的服务控制API函数,可以让你从命令行里改变大量的参数。这位服务开发者们提供了很多的优势。例如,它提供了一个方便的方式来创建或者在注册表和服务控制管理数据库中配置服务信息。开发者们不需要在手动的在注册表里单独的设置键值来配置服务,也不用重起机器来强迫服务控制管理数据库升级。

作为一个命令很工具,SC.exe可以用来测试你自己的系统,你可以设置一个批处理文件来使用不同的参数调用SC.exe来控制服务。这个很有用,如果你想看看你的服务不断的启动和停止,我没有试过哦!让一个服务一下子打开,一下子关闭,听上去很不错的。如果你的服务进程里面有多个进程的话,你可以保持一个进程继续运行不让它走开,然后让另一个不断的打开在关闭,还可以寻找一下内存缺乏导致不完全清楚的证据。

下面介绍SC,SC QC,and SC QUERY

SC使用这样的语法:

1. SC [Servername] command Servicename [Optionname= Optionvalue]

2. SC [command]

这里使用第一种语法使用SC,使用第二种语法显示帮助。

下面介绍各种参数。

Servername

可选择:可以使用双斜线,如\\\\myserver,也可以是\\\\192.168.0.1来*作远程计算机。如果在本地计算机

上作就不用添加任何参数。

Command

下面列出SC可以使用的命令。

config 改变一个服务的配置。(长久的)

continue 对一个服务送出一个继续控制的要求。

control 对一个服务送出一个控制。

create 创建一个服务。(增加到注册表中)

delete 删除一个服务。(从注册表中删除)

EnumDepend 列举服务的从属关系。

GetDisplayName 获得一个服务的显示名称。

GetKeyName 获得一个服务的服务键名。

interrogate 对一个服务送出一个询问控制要求。

pause 对一个服务送出一个暂停控制要求。

qc 询问一个服务的配置。

query 询问一个服务的状态,也可以列举服务的状态类型。

start 启动一个服务。

stop 对一个服务送出一个停止的要求。

Servicename

在注册表中为service key制定的名称。注意这个名称是不同于显示名称的(这个名称可以用net start和服务控

制面板看到),而SC是使用服务键名来鉴别服务的。

Optionname

这个optionname和optionvalue参数允许你指定命令参数的名称和数值。注意,这一点很重要在作名称和等

号之间是没有空格的。一开始我不知道,结果??????,比如,start= optionvalue,这个很重要。

optionvalue可以是0,1,或者是更多的*作参数名称和数值对。如果你想要看每个命令的可以用的optionvalue,你可以使用sc command这样的格式。这会为你提供详细的帮助。

Optionvalue

为optionname的参数的名称指定它的数值。有效数值范围常常限制于哪一个参数的

optionname。如果要列表请

用 sc command来询问每个命令。

Comments

很多的命令需要管理员权限,所以我想说,在你*作这些东西的时候最好是管理员。呵呵!

当你键入SC而不带任何参数时,SC.exe会显示帮助信息和可用的命令。当你键入SC紧跟着命令名称时,你可以得到一个有关这个命令的详细列表。比如,键入sc create可以得到和create有关的列表。但是除了一个命令,sc query,这会导出该系统中当前正在运行的所有服务和驱动程序的状态。当你使用start命令时,你可以传递一些参数(arguments)给服务的主函数,但是不是给服务进程的主函数。

SC create

这个命令可以在注册表和服务控制管理数据库建立一个入口。

语法1

sc [servername] create Servicename [Optionname= Optionvalue]

这里的servername,servicename,optionname,optionvalue和上面的一样,这里就不多说了。这里我们

详细说明一下optionname和optionvalue。

Optionname Optionvalue 描述

type= own, share, interact, kernel, filesys

关于建立服务的类型,选项值包括驱动程序使用的类型,默认是share。

start= boot, system, auto, demand, disabled

关于启动服务的类型,选项值包括驱动程序使用的类型,默认是demand(手动)。

error= normal, severe, critical, ignore

当服务在导入失败错误的严重性,默认是normal。

binPath= (string)

服务二进制文件的路径名,这里没有默认值,这个字符串是必须设置的。

group= (string)

这个服务属于的组,这个组的列表保存在注册表中的ServiceGroupOrder下。默认是nothing。

tag= (string)

如果这个字符串被设置为yes,sc可以从CreateService call中得到一个tagId。然而,SC并不显示这个标签,所

以使用这个没有多少意义。默认是nothing

depend= (space separated string)有空格的字符串。

在这个服务启动前必须启动的服务的名称或者是组。

obj= (string)

账号运行使用的名称,也可以说是登陆身份。默认是localsystem

Displayname= (string)

一个为在用户界面程序中鉴别各个服务使用的字符串。

password= (string)

一个密码,如果一个不同于localsystem的账号使用时需要使用这个。

Optionvalue

Optionname参数名称的数值列表。参考optionname。当我们输入一个字符串时,如果输入一个空的引用这

意味着 一个空的字符串将被导入。

Comments

The SC CREATE command performs the operations of the CreateService API function.

这个sc create命令执行CreateService API函数的*作。详细请见CreateService。 例1

下面这个例子在一台叫做(\\\\myserver)的计算机上为一个叫“NewService”的服务建立的一个注册表登记。

sc \\\\myserver create NewService binpath= c:\\winnt\\system32\\NewServ.exe

按照默认,这个服务会建立一个WIN32_SHARE_PROCESS使用SERVICE_DEMAND_START启动方式。这将不会有

任何从属 关系,也将会按照localsystem安全上下关系来运行。 例2

下面这个例子将在本地计算机上,建立一个服务,它将会是一个自动运行服务,并且运行在他自己的进程

上。它从属于TDI组和NetBios服务上。注意,你必须在从属中间增加一个空格的引用。

sc create NewService binpath= c:\\winnt\\system32\\NewServ.exe type= own

start= auto depend= \ 例3

服务开发者可以通过临时改变二进制路径(影像路径)的方式来将这个服务运行在内核调试器的上下关系

中。下面这个例子就可以让我们看到如何改变服务的配置。

sc config NewService binpath= \

这个例子会引起服务控制管理器调用ntsd.exe使用下例的参数字符串:

\

当系统装入newserv.exe时ntsd将会转而打断调试器,所以断点可以被设置在服务代码里。

SC QC

这个SC QC“询问配置”命令可以列出一个服务的配置信息和QUERY_SERVICE_CONFIG

结构。

语法1

sc [Servername] qc Servicename [Buffersize]

Parameters

servername和servicename前面已经介绍过了,这里不再多说。

Buffersize,可选择的,列出缓冲区的尺寸。

Comments

SC QC命令显示了QUERY_SERVICE_CONFIG结构的内容。

以下是QUERY_SERVICE_CONFIG相应的区域。

TYPE dwServiceType

START_TYPE dwStartType

ERROR_CONTROL dwErrorControl

BINARY_PATH_NAME lpBinaryPathName

LOAD_ORDER_GROUP lpLoadOrderGroup

TAG dwTagId

DISPLAY_NAME lpDisplayName

DEPENDENCIES lpDependencies

SERVICE_START_NAME lpServiceStartName 例1

下面这个例子询问了在上面例子中建立的“NewService”服务的配置:

sc \\\\myserver qc NewService

sc显示下面的信息:

SERVICE_NAME: NewService

TYPE : 20 WIN32_SHARE_PROCESS

START_TYPE : 3 DEMAND_START

ERROR_CONTROL : 1 NORMAL

BINARY_PATH_NAME : c:\\winnt\\system32\\NewServ.exe

LOAD_ORDER_GROUP :

TAG : 0

DISPLAY_NAME : NewService

DEPENDENCIES :

SERVICE_START_NAME : LocalSystem

NewService有能力和其他的服务共享一个进程。但是它不是自动启动的。二进制文件名是NewServ.exe。 这个 服务

不依靠与其它的的服务,而且运行在lcoalsystem的安全上下关系中。这些都是调用QueryServiceStatus 基

本的返

回,如果还需要更多的细节届时,可以看看API函数文件。

SC QUERY

SC QUERY命令可以获得服务的信息。

语法:

sc [Servername] query { Servicename │ Optionname= Optionvalue... }

参数:

servername, servicename, optionname, optionvalue不在解释。只谈一下这个命令提供的数值。

Optionname Optionvalue

Description

type= driver

本文来源:https://www.bwwdw.com/article/pr7r.html

Top