必须掌握的网络八个DOS命令
ping
它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的*作系统等。下面就来看看它的一些常用的*作。先看看帮助吧,在DOS窗口中键入:ping /? 回车,。所示的帮助画面。在此,我们只掌握一些基本的很有用的参数就可以了(下同)。
- -t 表示将不间断向目标IP发送数据包,直到我们强迫其停止。试想,如果你使用100M的宽带接入,而目标IP是56K的小猫,那么要不了多久,目标IP就因为承受不了这么多的数据而掉线,,一次攻击就这么简单的实现了。
- -l 定义发送数据包的大小,默认为32字节,我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用,会有更好的效果哦。
- -n 定义向目标IP发送数据包的次数,默认为3次。如果网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那么就定义为一次吧。
说明一下,如果-t 参数和 -n参数一起使用,ping命令就以放在后面的参数为标准,比如"ping IP -t -n 3",虽然使用了-t参数,但并不是一直ping下去,而是只ping 3次。另外,ping命令不一定非得ping IP,也可以直接ping主机域名,这样就可以得到主机的IP。
从TTL的返回值可以初步判断被ping主机的*作系统,之所以说"初步判断"是因为这个值是可以修改的。这里TTL=32表示*作系统可能是win98。
(小知识:如果TTL=128,则表示目标主机可能是Win2000;如果TTL=250,则目标主机可能是Unix)
nbtstat
该命令使用TCP/IP上的NetBIOS显示协议统计和当前TCP/IP连接,使用这个命令你可以得到远程主机的NETBIOS信息,比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。
- -a 使用这个参数,只要你知道了远程主机的机器名称,就可以得到它的NETBIOS信息(下同)。
- -A 这个参数也可以得到远程主机的NETBIOS信息,但需要你知道它的IP。
- -n 列出本地机器的NETBIOS信息。
当得到了对方的IP或者机器名的时候,就可以使用nbtstat命令来进一步得到对方的信息了,这又增加了我们入侵的保险系数。
netstat
这是一个用来查看网络状态的命令,*作简便功能强大。
- -a 查看本地机器的所有开放端口,可以有效发现和预防木马,可以知道机器所开的服务等信息。
- -r 列出当前的路由信息,告诉我们本地机器的网关、子网掩码等信息。用法:netstat -r IP。
tracert
跟踪路由信息,使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径,这对我们了解网络布局和结构很有帮助。 用法:tracert IP。
net
这个命令是网络命令中最重要的一个,必须透彻掌握它的每一个子命令的用法,因为它的功能实在是太强大了,这简直就是微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令,键入net /?回车。
在这里,我们重点掌握几个入侵常用的子命令。
- net view 使用此命令查看远程主机的所以共享资源。命令格式为net view /IP。
- net use 把远程主机的某个共享资源影射为本地盘符,图形界面方便使用。
表示把IP的共享名为sharename的目录影射为本地的x盘:
net use x: /IP/sharename
表示和IP建立IPC$连接:
net use/IP/IPC$ "password" /user:"name"
建立了IPC$连接后, 就可以上传文件了,把本地目录下的nc.exe传到远程主机
copy nc.exe /192.168.0.7/admin$
-
net start/stop ServiceName: 启动/远程主机上的服务
- net user 查看和帐户有关的情况,包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的,最重要的,它为我们克隆帐户提供了前提。
键入不带参数的net user,可以查看所有用户,包括已经禁用的。下面分别讲解。
1.net user abcd 1234 /add,新建一个用户名为abcd,密码为1234的帐户,默认为user组成员。
2.net user abcd /del,将用户名为abcd的用户删除。
3.net user abcd /active:no,将用户名为abcd的用户禁用。
4.net user abcd /active:yes,激活用户名为abcd的用户。
5.net user abcd,查看用户名为abcd的用户的情况
- net localgroup 查看所有和用户组有关的信息和进行相关*作。
键入不带参数的net localgroup即列出当前所有的用户组。
在入侵过程中,我们一般利用它来把某个帐户提升为administrator组帐户,这样我们利用这个帐户就可以控制整个远程主机了。用法:net localgroup groupname username /add。
现在我们把刚才新建的用户abcd加到administrator组里去了,这时候abcd用户已经是超级管理员了,你可以再使用net user abcd来查看他的状态,但这样太明显了,网管一看用户情况就能漏出破绽,所以这种方法只能对付菜鸟网管,但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员,这是后话。
-
net time 这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面,那么也许就用不到这个命令了。但简单的入侵成功了,难道只是看看吗?我们需要进一步渗透。这就连远程主机当前的时间都需要知道,因为利用时间和其他手段(后面会讲到)可以实现某个命令和程序的定时启动,为我们进一步入侵打好基础。用法:net time /IP。
at
这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序(知道net time的重要了吧?)。当我们知道了远程主机的当前时间,就可以利用此命令让其在以后的某个时间(比如2分钟后)执行某个程序和命令。用法:at time command /computer。表示在6点55分时,让名称为a-01的计算机开启telnet服务(这里net start telnet即为开启telnet服务的命令)。
ftp
大家对这个命令应该比较熟悉了吧?网络上开放的ftp的主机很多,其中很大一部分是匿名的,也就是说任何人都可以登陆上去。现在如果你扫到了一台开放ftp服务的主机(一般都是开了21端口的机器),如果你还不会使用ftp的命令怎么办?下面就给出基本的ftp命令使用方法。
首先在命令行键入ftp回车,出现ftp的提示符,这时候可以键入"help"来查看帮助(任何DOS命令都可以使用此方法查看其帮助)。
登陆过程,这就要用到open了,直接在ftp的提示符下输入"open 主机IP ftp端口"回车即可,一般端口默认都是21,可以不写。接着就是输入合法的用户名和密码进行登陆了,这里以匿名ftp为例介绍。用户名和密码都是ftp,密码是不显示的。当提示**** logged
in时,就说明登陆成功。这里因为是匿名登陆,所以用户显示为Anonymous。
要介绍具体命令的使用方法了。
- dir 跟DOS命令一样,用于查看服务器的文件,直接敲上dir回车,看到此ftp服务器上的文件。
- cd 进入某个文件夹。
- get 下载文件到本地机器。
- put 上传文件到远程服务器。
- del 删除远程ftp服务器上的文件。
- bye 退出当前连接。
- quit 同上。
telnet
功能强大的远程登陆命令,几乎所有的入侵者都喜欢用它,屡试不爽。为什么?它操作简单,如同使用自己的机器一样,只要你熟悉DOS命令,在成功以administrator身份连接了远程机器后,就可以用它来干你想干的一切了。下面介绍一下使用方法,首先键入telnet回车,再键入help查看其帮助信息。
然后在提示符下键入open IP回车,这时就出现了登陆窗口,让你输入合法的用户名和密码,这里输入任何密码都是不显示的。
批处理大全:
echo、echo off、@
echo 表示显示此命令后的字符
echo off 表示在此语句后所有运行的命令都不显示命令行本身
@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。
call
调用另一个批处理文件。
如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令。
示例:
call c:/ucdos/ucdos.bat
pause
运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续。
rem
表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。
注:可以用::代替rem
批处理文件的参数
%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身(不带bat后缀),其它参数字符串用%1到%9顺序表示。
if
if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。
有三种格式:
1、 if [not] "参数" == "字符串" 待执行的命令
参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。
例:if "%1"=="a" format a:
2、 if [not] exist [路径//]文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如: if exist c://config.sys type c://config.sys
表示如果存在c://config.sys文件,则显示它的内容。
3、 if errorlevel <数字> 待执行的命令
很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
goto
goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。
如:
goto end
:end
echo this is the end
choice
choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。
注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。
choice用户选择的返回值通过ERRORLEVEL 环境变量返回。需要注意的是当用if进行判断时应从最高值开始判断。
示例:
choice /c YNC /m "yes,no,cancel"
if errorlevel 3 goto cancel
if errorlevel 2 goto no
if errorlevel 1 goto yes
for
for 循环命令,只要条件符合,它将多次执行同一命令。
语法:
对一组文件中的每一个文件执行某个特定命令。
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters为特定命令指定参数或命令行开关。
例如:
for %%c in (*.bat *.txt) do type %%c
则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。
start 命令
调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
常用参数:
MIN 开始时窗口最小化
SEPARATE 在分开的空间内开始 16 位 Windows 程序
HIGH 在 HIGH 优先级类别开始应用程序
REALTIME 在 REALTIME 优先级类别开始应用程序
WAIT 启动应用程序并等候它结束
parameters 这些为传送到命令/程序的参数 执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。
批处理注册表操作
reg add "项" /v(value的缩写) 值 /t(type) reg_dword(默认是reg_sz) /d(data的缩写) "要插入的数据值" /f(forbiden的缩写,即强制的意思)
例如
reg add "HKLM/SYSTEM/CurrentControlSet/Control/Lsa" /v test /t reg_dword /d 1 /freg add "HKLM/SYSTEM/CurrentControlSet/Control/" /v test1212 /t reg_sz /d 1 /f
这句命令就是往你的注册表
HKLM/SYSTEM/CurrentControlSet/Control/Session
这个项下面新建一个 reg_dowrd 类型的值,名字为test,数据为 1
/f 表示在运行如果注册表里已经有这个值也不会提示你,直接修改,
如果没有这个参数的话,它会提示你是不是要修改
regedit /e filename.reg HKEY_LOCAL_MACHINE/SYSTEM
REG DELETE HKLM/Software/MyCo/MyApp/Timeout
/ve 删除空白值名称的值(默认)。
/va 删除该项下的所有值。
/f 不用提示就强行删除。
HKLM/SYSTEM/CurrentControlSet/Control/Lsa auditbaseobjects
假如我要清除WinRAR的历史记录,可以新建个批处理文件,
然后在里面加入如下文字:
reg delete HKLM/SYSTEM/CurrentControlSet/Control/ApmLegalHal /va /f
reg delete HKEY_CURRENT_USER/Software/WinRAR/DialogEditHistory/ArcName /va /f
reg delete HKEY_CURRENT_USER/Software/WinRAR/ArcHistory /va /f
其中/va参数是指删除该分支下的所有键值,/f参数是指不要跳出提示。
—————————————————————————————————-
如果想删除整个分支,就不要加/va,
例如:reg delete HKEY_CURRENT_USER/Software/CrocWare
—————————————————————————————————-
如果想删除某个键值,就用 reg delete (分支) /v (键值)
例如:
reg delete HKLM/SYSTEM/CurrentControlSet/Control/ApmLegalHal /v Present /f
————————————————————————————————
要注意:
如果注册表中有空格,应用双引号括住注册表;
如果注册表中有%,就用%%来表示;
例如:要清除Alcohol 120%的历史记录,可以在批处理中加入如下命令:
reg delete "HKEY_CURRENT_USER/Software/Alcohol Soft/Alcohol 120%%/Basic" /v "Image File Path" /f
reg delete "HKEY_CURRENT_USER/Software/Alcohol Soft/Alcohol 120%%/MountedMRU" /f
regedit /e filename.reg HKLM/Software/MyCo
REG DELETE HKLM/Software/MyCo
例如:
REG ADD //ABC/HKLM/Software/MyCo
添加远程机器 ABC 上的一个注册表项 REG ADD //ABC/HKLM/Software/MyCo
在本机REG ADD HKLM/Software/mylove
REG ADD HKLM/Software/MyCo /v Dataw /t REG_BINARY /d 22222222
添加一个值(名称: Data,类型: REG_BINARY(二进制数值),数据: fe340ead)
REG ADD HKLM/Software/MyCo /v MRU /t REG_MULTI_SZ /d fasx/0maisls
添加一个值(名称: MRU,类型: REG_MUTLI_SZ(多字符串),数据: fax/0mail/0/0)
REG ADD HKLM/Software/MyCo /v Path2 /t REG_EXPAND_SZ /d %%systemroot%% —–好像这个不能用了,用%systemroot%就行了!
添加一个值(名称: Path,类型: REG_EXPAND_SZ(单字符串),数据: %systemroot%) —-单字符串修改值的参数时,可以不写娄型,例:REG ADD HKLM/Software/MyCo /v Path2 /d %systemroot% 可修改pah2
注意: 在扩充字符串中使用双百分比符号( %% )
regedit /e filename.reg HKLM/Software//MyCo
REG DELETE HKLM/Software/MyCo/MyApp/Timeout
/ve 删除空白值名称的值(默认)。
/va 删除该项下的所有值。
/f 不用提示就强行删除。
echo Windows Registry Editor Version 5.00 >regfile.reg
echo [HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/CURRENTVERSION/RUN] >>regfile.reg
rem 下面的的句子表示删除deletekey键
echo "deletekey"=- >>regfile.reg
rem 下面的的句子表示删除增加或修改addkey键
echo addkey="yourpath/yourfile.exe" >>regfile.reg
regedit -s regfile.reg
del regfile.reg
regedit /e filename.reg HKEY_LOCAL_MACHINE//SYSTEM
REG DELETE HKLM/Software/MyCo/MyApp/Timeout
/ve 删除空白值名称的值(默认)。
/va 删除该项下的所有值。
/f 不用提示就强行删除
DOS下查看进程的命令和结束进程的命令
有些中毒后的机子没办法打开任务管理器,其实XP系统可以在运行CMD进入DOS界面,在下面"Tasklist"命令是一个用来显示运行在本地或远程计算机上的所有进程.
直接键入TASKLIST 即可查看,或者它也可以加一些参数它的使用格式为:
TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]
参数列表:
/S system 指定连接到的远程系统。
/U [domain/]user 指定使用哪个用户执行这个命令。
/P [password] 为指定的用户指定密码。
/SVC 显示每个进程中的服务。
/V 指定要显示详述信息。
/FI filter 显示一系列符合筛选器指定的进程。
/FO format 指定输出格式,有效值: "TABLE"、"LIST"、"CSV"。
当查看到非法进程后,可以用ntsd -c q -p PID 结束该进程(注:PID为要结束的进程对应进程标识符,在查看进程命令中可以看到这项的)
如:ntsd -c q -p 223
结束一个或多个任务或进程。可以根据进程 ID 或图像名来结束进程。
语法
taskkill [/s Computer] [/u Domain/User [/p Password]]] [/fi FilterName] [/pid ProcessID]|[/im ImageName] [/f][/t]
参数
/s Computer
指定远程计算机名称或 IP 地址(不能使用反斜杠)。默认值是本地计算机。
/u Domain/User
运行具有由 User 或 Domain/User 指定用户的帐户权限命令。默认值是当前登录发布命令的计算机的用户权限。
/p Password
指定用户帐户的密码,该用户帐户在 /u 参数中指定。
/fi FilterName
指定将要终止或不终止的过程的类型。以下是有效的筛选器名称、运算符和值: 名称 运算符 值
Hostname eq, ne 任何有效字符串。
状态 eq, ne RUNNING|NOT RESPONDING
Imagename eq, ne 任何有效字符串。
PID eg, ne, gt, lt, ge, le 任何有效的正整数。
Session eg, ne, gt, lt, ge, le 任何有效的会话数。
CPUTime eq, ne, gt, lt, ge, le hh:mm:ss 格式的有效时间。mm 参数和 ss 参数应在 0 到 59 之间,hh 参数可以是任何一个有效的无符号的数值。
Memusage eg, ne, gt, lt, ge, le 任何有效的整数。
用户名 eq, ne 任何有效的用户名 ([D
根据进程名杀死:
taskill /im processName /f
或者使用:
Ntsd –c –q –pn processName(explorer.exe)