本笔记为 泷羽sec 《红队全栈课程》学习笔记,课程请可自行前往B站学习,课程/笔记主要涉及网络安全相关知识、系统以及工具的介绍等,请使用该课程、本笔记以及课程和笔记中提及工具的读者,遵守网络安全相关法律法规,切勿进行违法违规违纪的操作。
写在最前面的话,我们为什么要学习网络安全这门技术:
- 维护国家安全
防范网络攻击:网络安全威胁已成为国家安全的重要挑战。学习网络安全有助于识别和防范来自国内外的网络攻击,防止敌对势力通过网络手段窃取敏感信息、破坏关键基础设施或干扰社会正常运作。
保护关键基础设施:现代社会高度依赖网络技术,金融系统、交通网络、电力供应等关键基础设施都依赖于稳定的网络环境。掌握网络安全知识有助于保护这些基础设施免受网络攻击,确保国家的正常运转。
- 促进经济发展
保障数字经济安全:数字经济已成为国家经济增长的重要引擎。通过学习网络安全,可以保障数字经济的健康发展,防止数据泄露和网络犯罪对经济活动的干扰。
增强国际竞争力:在全球化的背景下,网络安全技术水平直接影响国家的国际竞争力。掌握先进的网络安全技术和策略,有助于提升国家在全球数字经济中的地位。
- 提升社会稳定
防范社会风险:网络犯罪和网络恐怖主义对社会稳定构成严重威胁。学习网络安全有助于及时发现和应对这些风险,维护社会的和谐与稳定。
保护公民权益:网络安全直接关系到公民的隐私权和信息安全。通过学习网络安全,可以更好地保护公民的合法权益,增强公众对政府和企业的信任。
- 推动科技进步
创新安全技术:网络安全领域的技术创新不断推动信息技术的进步。学习网络安全有助于推动新技术的研发和应用,提升国家在科技领域的整体实力。
促进国际合作:网络安全是全球性问题,需要各国共同努力应对。通过学习网络安全,可以参与国际网络安全合作,共同制定国际标准和规范,提升全球网络安全水平。
- 强化法治建设
完善法律法规:学习网络安全有助于推动和完善相关法律法规的制定和实施,确保网络安全工作有法可依、有章可循。
提升执法能力:掌握网络安全知识可以提升执法部门的网络侦查和取证能力,有效打击网络犯罪,维护法律权威。
- 培养专业人才
构建人才梯队:网络安全领域需要大量高素质的专业人才。通过系统学习和培训,可以培养出一批具备专业知识和实战经验的网络安全专家,为国家的网络安全事业提供坚实的人才保障。
总之,学习网络安全不仅是个人职业发展的需要,更是维护国家安全、促进经济发展、保障社会稳定和推动科技进步的重要手段。通过不断提升网络安全意识和能力,我们可以更好地应对日益复杂的网络安全挑战,为实现国家的长期稳定和发展贡献力量。
系列课程视频详见泷羽sec 的小破站主页 传送门 ==> 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 约9分钟左右开始
先说下我们为什么要学习Windows的基础命令,在渗透测试中我们可能会取得windows的shell打进靶机内网,拿到的往往是cmd或者powershell的shell环境,这种情况下面我们是没有图形化操作界面对靶机进行操作的,所以如果要继续进行渗透的学习,就只能用命令行对试验的靶机进行相关操作。其次,Windows的操作过程中,有些命令行往往比鼠标点击更加快,有些甚至是鼠标点击无法替代的,比如一些组合操作,快速查找文件并对查找文件进行过滤,另外一些批量化的命令操作,比如要建100个文件夹,从1到500。
那么接下来就开始对Windows的基础命令进行学习吧。
一、cd / chdir 命令
cd/chdir命令比较简单,有几个细节注意下即可
- cd命令可以使用 cd\ 或者 cd/ 或者 cd \ 或者 cd / 直接退回当前盘符根目录
- cd命令没有cd ~进到家目录的方法,但是可以用 cd %homepath% 进到家目录
- cd命令可以用tab键补全
- cd命令过程中如果切换了盼复,可以用/d参数直接切换
- cd命令进入带空格的文件夹
- cd命令可以使用“..”退回上层目录
下面演示如下:
退到当前盘符的根目录,理论上正斜杠/反斜杠,以及带不带空格都可以,不过linux用习惯的同学应该会使用cd /命令。
# windows这几个命令都可以退到当前盘符的根目录
cd\
cd/
cd \
cd /
cd %homepath% # 这条命令可以进到家目录
cd过程中可以使用tab补全路径,具体演示略,这个请小伙伴自行多多尝试
/d参数,如果进到其他盘符的目录中,cd时使用该参数可直接切换盘符并进入路径
注意,终端打开某个文件夹的时候,这个文件夹默认会被cmd这个终端的进程占用,此时如果操作 ctrl+x / ctrl+v 就会出错。
目录中带空格,这个可能有些高版本的windows会出错,如果发现有问题,两边带双引号即可,具体演示略。
使用“..”退回上级目录,下图演示从 e:\test\test01\01\01 通过两层“..”进入 e:\test\test01\02\01 目录
二、dir 命令
dir命令核心用途是列出指定文件夹内的所有文件和文件夹。我们一般常用的参数是
dir /s 递归列出文件夹下面的文件和文件夹
dir /p 分页显示
dir /b 缩略显示
dir /a 显示所有文件夹包括隐藏文件
上面这些参数可以组合使用
下图演示了,在E盘查找所有包含vmware关键字,且同时扩展名是exe的可执行文件。
E:\>dir *vmware* /s/a/b | findstr exe
E:\Program Files (x86)\VMware\VMware Workstation\vmware-authd.exe
E:\Program Files (x86)\VMware\VMware Workstation\vmware-autostart.exe
E:\Program Files (x86)\VMware\VMware Workstation\vmware-kvm.exe
E:\Program Files (x86)\VMware\VMware Workstation\vmware-remotemks.exe
E:\Program Files (x86)\VMware\VMware Workstation\vmware-tray.exe
E:\Program Files (x86)\VMware\VMware Workstation\vmware-unity-helper.exe
E:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe
E:\Program Files (x86)\VMware\VMware Workstation\vmware.exe
E:\Program Files (x86)\VMware\VMware Workstation\bin\docker-machine-driver-vmware.exe
E:\Program Files (x86)\VMware\VMware Workstation\tools-upgraders\VMwareToolsUpgrader.exe
E:\Program Files (x86)\VMware\VMware Workstation\tools-upgraders\VMwareToolsUpgrader9x.exe
E:\Program Files (x86)\VMware\VMware Workstation\tools-upgraders\VMwareToolsUpgraderNT.exe
E:\Program Files (x86)\VMware\VMware Workstation\x64\vmware-vmx-debug.exe
E:\Program Files (x86)\VMware\VMware Workstation\x64\vmware-vmx-stats.exe
E:\Program Files (x86)\VMware\VMware Workstation\x64\vmware-vmx.exe
dir接重定向符“>” 保存输出结果,如果“>>”则是追加写入
F:\>dir > 1.txt
F:\>type 1.txt
驱动器 F 中的卷是 娱乐
卷的序列号是 0006-BB37
F:\ 的目录
2024/11/10 23:55 0 1.txt
2024/10/31 04:38 <DIR> 111
2023/01/28 00:27 <DIR> BaiZhi
2024/10/30 00:22 <DIR> game
2024/11/09 02:56 <DIR> Program Files (x86)
2024/02/05 22:32 <DIR> video
2024/02/10 22:13 <DIR> 学习video
2023/09/29 07:13 <DIR> 学习资料
1 个文件 0 字节
7 个目录 15,817,871,360 可用字节
dir 支持管道符,比如使用dir | clip,可以将输出结果复制到剪贴板的内存中,后续可以通过ctrl+v命令将dir的结果copy出来。
本笔记只是举例了dir的基本用途,dir完整的用法应该使用dir/?进一步查看/学习。
三、echo 命令
Windows的echo命令和Linux的echo命令很像,具体略。
但是在Windows的bat文件中(类似Linux的.sh脚本),使用echo off/on可以作为命令行的修饰符作用,开启或者关闭命令本身是否显示的功能。
下图中,如果echo off情况下,则不会显示整个bat文件中的命令,如果echo on的话,则会显示执行了相应的命令。
另外加上@符号是连echo on/off 都不显示,@也可以单独加在某个命令之前,这样即便echo on了,也不会显示执行的命令,只会显示结果。
四、tree 命令
tree命令也比较简单,tree /f 参数可以将文件夹中的文件也枚举出来,/a 参数是输出格式的调整。另外tree命令同样支持重定向符,将输出结果保存在一个文本文件中。
五、md / mkdir 和 rd / rmdir 命令
md / mkdir
这2个命令都是创建文件夹,有别与Linux,它可以直接创建多级文件夹目录
rd / rmdir
这2条命令都是删除文件夹,/s 可以直接删除。另外,/s的时候,不管文件夹里有没有文件,都会删除。
E:\1>md 2\3\4\5\6 # windows中可以直接创建深度几层的文件夹
E:\1>tree # 使用tree命令可以看到文件夹的深度
卷 新加卷 的文件夹 PATH 列表
卷序列号为 00000001 6EBC:5CB2
E:.
└─2
└─3
└─4
└─5
└─6
E:\1>rd 2\3\4\5\6 # 直接使用rd命令可以这串深度若干层的文件夹
E:\1>tree
卷 新加卷 的文件夹 PATH 列表
卷序列号为 000000A1 6EBC:5CB2
E:.
└─2
└─3
└─4
└─5
E:\1>rd 2\3\4\5 /s /q # 使用rd命令只能删除最深一层的文件夹
E:\1>tree # 使用tree命令可以看到,4文件夹下面的5文件夹已经被删除
卷 新加卷 的文件夹 PATH 列表
卷序列号为 0000006F 6EBC:5CB2
E:.
└─2
└─3
└─4
E:\1>rd 2 # 如果直接删除1文件夹下的2文件夹,会提示拟删除的文件夹非空
目录不是空的。
E:\1>rd 2 /s # 如果使用/s参数,会递归删除里面的文件夹
2, 是否确认(Y/N)? y
E:\1>
六、copy 命令
copy命令较简单,具体可以看其帮助教程。
F:\>copy/?
将一份或多份文件复制到另一个位置。COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]source 指定要复制的文件。
/A 表示一个 ASCII 文本文件。
/B 表示一个二进位文件。
/D 允许解密要创建的目标文件
destination 为新文件指定目录和/或文件名。
/V 验证新文件写入是否正确。
/N 复制带有非 8dot3 名称的文件时,
尽可能使用短文件名。
/Y 不使用确认是否要覆盖现有目标文件
的提示。
/-Y 使用确认是否要覆盖现有目标文件
的提示。
/Z 用可重新启动模式复制已联网的文件。
/L 如果源是符号链接,请将链接复制
到目标而不是源链接指向的实际文件。
下面演示使用copy命令制作图片马,准备一张正常的图片(假设叫1.jpg),一个文本文件(假设叫2.txt),文本文件中放入如下文本:
<?php phpinfo();?>
Windows中执行下列命令:
copy 1.jpg/b+2.txt/a 3.jpg
将3.jpg传入kali,并copy一份改名成3.php,在图片和php文件当前目录开启php的http服务:
php -S 0.0.0.0:8000
物理机或者kali浏览器访问http://kali-ip:8000/3.jpg,可以看到是一张正常的图片。
物理机或者kali浏览器访问http://kali-ip:8000/3.php,服务器执行并回显了phpinfo()函数信息。如果将上述php语法换成其他恶意代码,则可以达到攻击效果,具体演示略。
七、windows 一些常用程序命令
mspaint | 画图 |
calc | 计算器 |
write | 写字板 |
notepad | 记事本 |
SoundRecorder | 录音机 |
SnippingTool | win自带的截图工具 |
control | 控制面板 |
wf.msc | 防火墙 |
lusrmgr.msc | 本地用户和组 |
命令有很多上面仅为抛砖引玉,这些命令直接输入在cmd终端或者文件夹导航栏就可以启动相应程序,另外这些命令基本全部都在c:\Windows\system32文件夹中,因为path路径的关系,我们无论在系统的哪里,基本都可以执行到这些命令。
C:\Users\Lenovo>path # 我们使用path命令可以看到环境变量
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
C:\Users\Lenovo>where notepad # 查找下记事本在哪里
C:\Windows\System32\notepad.exe # 可以看到2个地方都有记事本
C:\Windows\notepad.exe
C:\Users\Lenovo>where mspaint # 顺便查找下画笔
C:\Windows\System32\mspaint.exe
八、move 命令
move命令同linux的mv命令很像,具体参数细节可以查看其帮助文件
另外演示下结合通配符使用move命令
E:\>dir
驱动器 E 中的卷是 新加卷
卷的序列号是 6EBC-5CB2
E:\ 的目录
2024/11/11 02:23 32 1.txt
2024/11/11 02:19 <DIR> 1test
2024/11/11 02:23 726 2.jpg
2024/11/11 02:26 18 2.txt
2024/11/11 02:24 759 3.jpg
2024/11/11 02:27 745 4.jpg
5 个文件 2,280 字节
1 个目录 5,300,015,104 可用字节
E:\>move *.jpg 1test
E:\2.jpg
E:\3.jpg
E:\4.jpg
移动了 3 个文件。
E:\>move *.* 1test
覆盖 E:\1test\1.txt 吗? (Yes/No/All): y
E:\1.txt
E:\2.txt
移动了 2 个文件。
E:\>
九、ren 命令
ren命令具体参数略,演示下ren命令通过通配符批量修改文件名称
E:\>dir
驱动器 E 中的卷是 新加卷
卷的序列号是 6EBC-5CB2
E:\ 的目录
2024/11/11 02:50 21 11.txt
2024/11/11 02:50 21 12.txt
2024/11/11 02:50 21 13.txt
2024/11/11 02:48 <DIR> 1test
3 个文件 63 字节
1 个目录 5,300,011,008 可用字节
E:\>ren *.txt *.txt.log
E:\>dir
驱动器 E 中的卷是 新加卷
卷的序列号是 6EBC-5CB2
E:\ 的目录
2024/11/11 02:50 21 11.txt.log
2024/11/11 02:50 21 12.txt.log
2024/11/11 02:50 21 13.txt.log
2024/11/11 02:48 <DIR> 1test
3 个文件 63 字节
1 个目录 5,300,011,008 可用字节
E:\>ren *.log a*.log
E:\>dir
驱动器 E 中的卷是 新加卷
卷的序列号是 6EBC-5CB2
E:\ 的目录
2024/11/11 02:50 21 .ttt
2024/11/11 02:48 <DIR> 1test
2024/11/11 02:50 21 a1.txt.log
2024/11/11 02:50 21 a2.txt.log
2024/11/11 02:50 21 a3.txt.log
4 个文件 84 字节
1 个目录 5,300,011,008 可用字节
十、find 命令
先说下 type 命令,type命令类似 Linux 的 cat 命令,显示文本内容,另外 type 也支持通配符,将
该条命令可以快速在文件中查找特定的字符串,查找的主体格式如下,注意查找的文本关键字必须用双引号包裹:
find "str" files
find /?
在文件中搜索字符串。FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文本字符串。
[drive:][path]filename
指定要搜索的文件。如果没有指定路径,FIND 将搜索在提示符处键入
的文本或者由另一命令产生的文本。
下图分别执行了默认搜索,/c 只统计符合条件的行数,/v 反向搜索,/n 返回结果带行号,/i 忽略大小写。
另外,值得注意的是,find命令搜索的目标文件,一般仅限于文本类型。如果是word/excel等文件,这类文件实际是个压缩文件,可以用7z/RAR等尝试解压。解压后可能还无法直接搜到,因为编码的问题,终端执行chcp 65001后,就可以实现搜索。
十一、ipconfig 命令
这条命令可以查看自己的网卡对应的IP地址(IPv4/IPv6)、状态、MAC地址等。
另外注意的是,手机也好自己电脑也好,IPv6地址信息不要随意泄漏,因为测试过几次,发现某运营商电话卡是独立公网IPv6的ip,其他电脑可以ping到,用termux+python启用了个http服务,其他电脑也可以访问,各位小伙伴有兴趣可以自己尝试下,访问地址是 http://[手机的IPv6]:8000/ ,具体演示过程略。
Termux 可以在到github下载 Releases · termux/termux-app
十二、Ping 命令
Ping 命令常规用法
Ping命令是一个网络工具,用于测试另一台主机是否可达。它发送ICMP(Internet Control Message Protocol)回显请求给目标主机,并等待接收回显应答。该命令通常用于诊断网络连接问题,验证主机是否在线。如果我们直接 Ping一个域名,会把域名解析成IP返回。比如:
F:\>ping -n 1 www.baidu.com
正在 Ping www.a.shifen.com [180.101.50.242] 具有 32 字节的数据:
来自 180.101.50.242 的回复: 字节=32 时间=12ms TTL=52
180.101.50.242 的 Ping 统计信息:
数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 12ms,最长 = 12ms,平均 = 12ms
F:\>ping -n 1 baidu.com
正在 Ping baidu.com [110.242.68.66] 具有 32 字节的数据:
来自 110.242.68.66 的回复: 字节=32 时间=33ms TTL=50
110.242.68.66 的 Ping 统计信息:
数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 33ms,最长 = 33ms,平均 = 33ms
Ping 命令判断主机系统
另外,ping的时候返回的TTL信息,以下2台主机中,130是Windows,128是Linux,可以看到Ping Windows主机返回的TTL是128,而Ping Linux主机返回的TTL是64。所以根据TTL的时间我们大概率可以判断出目标机器是什么操作系统。
F:\>ping -n 1 192.168.175.130 | findstr TTL
来自 192.168.175.130 的回复: 字节=32 时间<1ms TTL=128
F:\>ping -n 1 192.168.175.128 | findstr TTL
来自 192.168.175.128 的回复: 字节=32 时间<1ms TTL=64
Windows修改注册表调整TTL时间
另外,TTL时间也可以进行修改,以Windows为例,进入注册表,在该键中新建个健值,DefaultTTL,设置为000000ff,保存后需要重启操作系统。
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters]
再Ping的话,我们看到TTL变成了255
-a 参数
该参数可以探测主机名(蓝框cmd为虚拟机,白框cmd为物理机)
-n 参数
该参数是ping的次数,默认是Ping 4次,另外ping的间隔是1秒一次,所以下面这条命令可以计时30秒,在有些 cmd 批处理命令中需要计时处理的,可以使用该条命令代替,Ping完30次后执行下面一条命令。
ping -n 30 127.0.01 > NUL # 30秒后执行其他命令
设置防火墙阻止Ping
复现环境
靶机:Windows 7 旗舰版
靶机IP:192.168.200.137
下图可以看到,默认情况下,物理机(终端背景黑色)可以直接Ping到靶机(终端背景白色)
接下来打开高级防火墙,终端内可使用下条命令,注意家庭版Win7可能没有该功能。
wf.msc
接下来按下列步骤进行操作
此时再Ping靶机就会发现无法Ping通。
注意,上述方法只禁用了IPv4,如果使用IPv6依旧可以Ping到靶机的IPv6地址,如需禁止向本机Ping IPv6,防火墙还需设置如下的新规则。
具体细节略,但阻止ICMP v6协议后,我们可以发现ping 靶机的 IPv6地址也无法ping通了。
十三、tasklist / taskkill
1.tasklist 命令
该命令是一个强大的进程管理工具,用于显示本地或远程计算机上当前正在运行的进程列表。该命令可以帮助用户了解系统的运行状况,并进行相应的管理操作。
下图演示了运行计算器 calc 后,使用 task /fi 过滤出 calc.exe 的操作,我们也可以使用管道符 + findstr 从结果中进行筛选。注意使用 /fi 过滤时,imagename 必须是完整的 calc.exe,不然会无法搜索到。
我们还可以使用下面的命令,把 tasklist 的结果保存成 csv 文件,一种无格式的 excel 可以直接打开的文件。
tasklist /fo csv > .\tasklist.
csv
2.taskkill 命令
taskkill 命令是一个用于终止进程的命令行工具。它可以根据进程ID(PID)或进程名来结束一个或多个正在运行的进程。该命令对于系统管理员和高级用户来说非常有用,特别是在需要快速关闭不响应或占用大量资源的进程时。
下面做几个小实验,开启一个记事本,用 tasklist 检索出pid进程号,然后用 taskkill 结束这个进程:
d:\c\desktop>notepad
d:\c\desktop>tasklist /fi "imagename eq notepad.exe"
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
notepad.exe 16368 Console 3 17,172 K
d:\c\desktop>taskkill /pid 16368
成功: 给进程发送了终止信号,进程的 PID 为 16368。
我们开启3个计算器,用 tasklist /fi 检索出(非必须),再用 taskkill /fi 结束进程,第一次并未成功,第二次加上 /f 才成功结束进程。注意,如果是win7,imagename 应该检索 calc.exe。
d:\c\desktop>calc
d:\c\desktop>calc
d:\c\desktop>calc
d:\c\desktop>tasklist /fi "imagename eq CalculatorApp.exe"
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
CalculatorApp.exe 13192 Console 3 89,588 K
CalculatorApp.exe 9992 Console 3 90,596 K
CalculatorApp.exe 13884 Console 3 90,352 K
d:\c\desktop>taskkill /fi "imagename eq CalculatorApp.exe"
成功: 给进程发送了终止信号,进程的 PID 为 13192。
成功: 给进程发送了终止信号,进程的 PID 为 9992。
成功: 给进程发送了终止信号,进程的 PID 为 13884。
d:\c\desktop>taskkill /fi "imagename eq CalculatorApp.exe" /f
成功: 已终止 PID 为 13192 的进程。
成功: 已终止 PID 为 9992 的进程。
成功: 已终止 PID 为 13884 的进程。
我们开启3个记事本,用 taskkill /im 通配符格式结束3个记事本的进程。
d:\c\desktop>notepad
d:\c\desktop>notepad
d:\c\desktop>notepad
d:\c\desktop>tasklist /fi "imagename eq notepad.exe"
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
notepad.exe 7104 Console 3 16,480 K
notepad.exe 11512 Console 3 16,448 K
notepad.exe 17368 Console 3 16,444 K
d:\c\desktop>taskkill /im notepad.*
成功: 给进程 "notepad.exe" 发送了终止信号,进程的 PID 为 7104。
成功: 给进程 "notepad.exe" 发送了终止信号,进程的 PID 为 11512。
成功: 给进程 "notepad.exe" 发送了终止信号,进程的 PID 为 17368。
十四、ver / winver / systeminfo
前两条命令都是显示 windows的版本,ver 直接在终端上显示,winver会弹窗显示,systeminfo 显示本地或远程机器(包括服务包级别)的操作系统配置的信息,三条命令较简单具体演示略,但这些命令尤其是systeminfo命令信息收集用处较大,对渗透测试人员来说,在内网渗透过程中非常重要。
十五、start 命令
start 命令是一个用于启动程序、打开文件夹或文档、以及执行其他常见任务的命令行工具。该命令非常灵活,可以通过多种方式使用,以满足不同用户的需求。值得注意的是 start 命令更多是运用在 cmd / powershell 等与各种命令结合使用,以完成各种复杂的语法和自动化任务。
下图演示了在 cmd 中用 start cmd 打开一个新的 cmd 窗口,再在新的 cmd 中使用 start powershell 命令打开一个 新的powershell 窗口。
如果 start 命令后面接一个有扩展名的文件,那么windows会用和这个扩展名相关联的应用程序打开这个文件。
十六、shutdown 命令
该命令为Windows系统的管理工具,可以实现正常关机、快速重启、计划任务、紧急处理、远程操作,以及包括注销用户、强制关闭程序、进入休眠等功能。
下面这条命令是立即关机
shutdown /s /t 0
下面这条是立即重启
shutdown /r /t 0
下面这条是30秒后关机,/t 后面是秒
shutdown /s /t 30
下面这条命令的 /f 参数是强制关闭正在运行的应用程序而不事先警告用户,可能导致未保存的文件丢失,故谨慎使用 /f 参数。
shutdown /s /t 0
十七、at 命令
该条命令用于在 Windows 操作系统中计划任务在指定的时间运行。它允许用户在未来的某个时间点执行命令或脚本。at 命令可以帮助自动化一些任务,减少手动操作的需要。主要用途包括: 调度脚本和批处理文件:在指定时间自动运行脚本或批处理文件。 系统维护任务:安排系统维护任务,例如定期清理磁盘、备份数据等。 应用程序启动:在特定时间启动应用程序。
注意 at 这条命令win8后已经弃用,win7 的话我们还可以利用下,做个小实验如下,假设现在是 19:36 我们让系统19:37 往E盘写入个文本文件,内容是hello world。注意,cmd 需要有管理员权限。
win10 弃用 at 的提示,并提示已经改用 schtasks.exe 。
d:\>ver
Microsoft Windows [版本 10.0.19045.5131]
d:\>at
AT 命令已弃用。请改用 schtasks.exe。
不支持该请求。
十八、arp 命令
arp(Address Resolution Protocol)命令用于显示和修改操作系统中的 ARP 缓存表。ARP 是一种用于将网络层地址(如 IP 地址)转换为链路层地址(如 MAC 地址)的协议。这在以太网等网络中尤为重要,因为设备需要知道彼此的 MAC 地址才能进行通信。
arp 命令参数较少,主要参数及功能如下:
arp -a # 显示 arp 表
arp -d # 删除指定主机
arp -s # 将 IP 和 MAC 地址设置为静态关联
下面来做个小实验,两台 win7 的靶机,两台win7靶机的ip分别为 192.168.200.137 / 192.168.200.143。2台靶机中有一台是刚上线的,所以arp表中没有互相都没有对方。
我们可以看到,当1台机器ping了对方之后,2台机器的arp表都有了对方。
接下来我们使用kali 的arpspoof进行arp欺骗,让IP 137 结尾的 win7 误以为网关的MAC地址为kali的网卡MAC,使用的命令如下,注意命令带有攻击性,请仅在靶机或者实验环境进行:
sudo arpspoof -t 192.168.200.137 -r 192.168.200.2
发起攻击后,我们可以看到win7的网关MAC地址变成了kali 的网卡MAC地址,此时ping 百度已经ping不通了。
arp欺骗防御据说改成静态就可以,但是未能复现,这里先挖个坑,后续有机会再补。
arp -d *
netsh interface ip delete arpcache # 和 arp -d * 效果一样,都是清arp表
arp -s ip mac # 如果添加静态失败可以用下面一条命令
netsh -c "i i" add neighbors Idx ip mac # Idx 是个数字,用下面命令看
netsh i i show in
arp部分参考资料:
十九、logoff
该命令用于在 Windows 操作系统中注销当前用户或其他用户会话。这在多用户环境中尤其有用,例如服务器或远程桌面会话。
logoff [SessionName | SessionID] [/server:ServerName] [/v]
接下来,我们做个试验。在 VMware 里面有两个已经激活的 Windows 10 企业版虚拟机:win10-a 和 win10-b。win10-a 通过 mstsc 远程登录到 win10-b,我们可以使用 logoff [SessionName | SessionID] 命令来注销会话(其实直接运行 logoff 命令也可以)。另外,据说:
1)如果使用 VMware 或者 VirtualBox 登录到 Windows,在物理机上也可以查询到虚拟机中的 SessionName 或者 SessionID,从而使用 logoff 命令来注销虚拟机中的会话。但是,由于物理机是 Windows 家庭版,因此无法复现这种操作。
2)Windows Server 版本支持多用户会话,可以同时容纳多个远程桌面连接。该场景下管理员可以使用该方式关闭连接。因电脑配置跑不动故未复现。