From dd0073b4974a18e8f8c60e3fa7c6948cc7f2c055 Mon Sep 17 00:00:00 2001 From: MasonLiu <2857911564@qq.com> Date: Wed, 4 Dec 2024 17:21:26 +0800 Subject: [PATCH] add xianzhi --- Core.py | 99 ++++++++++++++++---------------- GotoSend_4hou.py | 20 +++---- GotoSend_anquanke.py | 16 +++--- GotoSend_doonsec.py | 16 +++--- GotoSend_xianzhi.py | 131 +++++++++++++++++++++++++++++++++++++++++++ JSON/4hou.json | 10 ++-- JSON/doonsec.json | 96 +++++++++++++++---------------- JSON/xianzhi.json | 8 +-- config.yaml | 4 +- db/4hou.db | Bin 229376 -> 229376 bytes db/doonsec.db | Bin 69632 -> 69632 bytes db/xianzhi.db | Bin 0 -> 24576 bytes 12 files changed, 265 insertions(+), 135 deletions(-) create mode 100644 GotoSend_xianzhi.py create mode 100644 db/xianzhi.db diff --git a/Core.py b/Core.py index 8b8b238..8f56d31 100644 --- a/Core.py +++ b/Core.py @@ -1,5 +1,5 @@ import signal -from datetime import datetime +from datetime import datetime, timedelta import sys import time import yaml @@ -11,19 +11,18 @@ from media.xianzhi import xianzhi_main from GotoSend_4hou import Src_4hou from GotoSend_anquanke import Src_anquanke from GotoSend_doonsec import Src_doonsec +from GotoSend_xianzhi import Src_xianzhi # 加载参数 def get_params(): with open('./config.yaml', 'r', encoding="utf-8") as file: config = yaml.safe_load(file) sleep_time = int(f"{config['sleep_time']}") - s_hour = int(f"{config['s_hour']}") e_hour = int(f"{config['e_hour']}") - c_hour = int(f"{config['c_hour']}") - return sleep_time, s_hour, e_hour, c_hour + return sleep_time, e_hour -sleep_time, s_hour, e_hour, c_hour = get_params() +sleep_time, e_hour = get_params() def crab_job(): print("正在启动各爬虫并获取资源中...") @@ -31,10 +30,11 @@ def crab_job(): xianzhi_main() freebuf_main() -def send_job(): - Src_4hou(s_hour, e_hour) - Src_anquanke(s_hour, e_hour) - Src_doonsec(s_hour, e_hour) +def send_job(time_1): + Src_4hou(time_1) + Src_anquanke(time_1) + Src_doonsec(time_1) + Src_xianzhi(time_1) def signal_handler(sig, frame): print("接收到退出信号,程序即将退出...") @@ -44,24 +44,19 @@ def signal_handler(sig, frame): signal.signal(signal.SIGINT, signal_handler) # Ctrl+C signal.signal(signal.SIGTERM, signal_handler) # kill命令 + def main_loop(): while True: try: - # 获取当前时间 - now = datetime.now() - # 检查是否为特定时间点 - if now.hour == c_hour and now.minute == 5: - crab_job() - send_job() - print("执行完毕,等待下一次执行...") - else: - pass - # print("正在等待执行...") - # print("等待间隔:", int(sleep_time)) - time.sleep(sleep_time) # 每隔35秒执行一次 + # 执行任务 + crab_job() + send_job(e_hour) + print("执行完毕,等待下一次执行...") + time.sleep(e_hour * 60 * 60 - 60) + except Exception as e: - print(f"发生错误: {e} ,程序已暂停") - # SendToFeishu(f"发生错误: {e} ,程序已退出", "报错信息") + print(f"发生错误: {e}, 程序已暂停") + # SendToFeishu(f"发生错误: {e}, 程序已退出", "报错信息") exit() # 探测rss源状态 @@ -77,11 +72,11 @@ def check_rss_status(url): def test_rss_source(): rss_info = "" - url_1 = check_rss_status("https://forum.butian.net/Rss") - if url_1 == True: - rss_info += "奇安信 源正常\n" - else: - rss_info += f"奇安信 源异常: {url_1}\n" + # url_1 = check_rss_status("https://forum.butian.net/Rss") + # if url_1 == True: + # rss_info += "奇安信 源正常\n" + # else: + # rss_info += f"奇安信 源异常: {url_1}\n" url_2 = check_rss_status("https://wechat.doonsec.com/bayes_rss.xml") if url_2 == True: @@ -89,17 +84,17 @@ def test_rss_source(): else: rss_info += f"洞见 源异常: {url_2}\n" - url_3 = check_rss_status("https://www.huawei.com/cn/rss-feeds/psirt/rss") - if url_3 == True: - rss_info += "华为 源正常\n" - else: - rss_info += f"华为 源异常: {url_3}\n" + # url_3 = check_rss_status("https://www.huawei.com/cn/rss-feeds/psirt/rss") + # if url_3 == True: + # rss_info += "华为 源正常\n" + # else: + # rss_info += f"华为 源异常: {url_3}\n" - url_4 = check_rss_status("https://www.sec_wiki.com/news/rss") - if url_4 == True: - rss_info += "安全维基 源正常\n" - else: - rss_info += f"安全维基 源异常: {url_4}\n" + # url_4 = check_rss_status("https://www.sec_wiki.com/news/rss") + # if url_4 == True: + # rss_info += "安全维基 源正常\n" + # else: + # rss_info += f"安全维基 源异常: {url_4}\n" url_5 = check_rss_status("https://api.anquanke.com/data/v1/rss") if url_5 == True: @@ -113,17 +108,17 @@ def test_rss_source(): else: rss_info += f"嘶吼 源异常: {url_6}\n" - url_7 = check_rss_status("https://paper.seebug.org/rss/") - if url_7 == True: - rss_info += "Seebug社区 源正常\n" - else: - rss_info += f"Seebug社区 源异常: {url_7}\n" + # url_7 = check_rss_status("https://paper.seebug.org/rss/") + # if url_7 == True: + # rss_info += "Seebug社区 源正常\n" + # else: + # rss_info += f"Seebug社区 源异常: {url_7}\n" - url_8 = check_rss_status("https://www.freebuf.com/feed") - if url_8 == True: - rss_info += "FreeBuf社区 源正常\n" - else: - rss_info += f"FreeBuf社区 源异常: {url_8}\n" + # url_8 = check_rss_status("https://www.freebuf.com/feed") + # if url_8 == True: + # rss_info += "FreeBuf社区 源正常\n" + # else: + # rss_info += f"FreeBuf社区 源异常: {url_8}\n" url_9 = check_rss_status("https://xz.aliyun.com/feed") if url_9 == True: @@ -139,9 +134,15 @@ if __name__ == "__main__": start_info = "" start_info += "程序已启动,当前时间为:" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\n" start_info += "程序作者:MasonLiu \t 开源地址:[GM-gitea](https://git.masonliu.com/MasonLiu/PyBot)" + "\n" - start_info += "时间配置:前一天 " + str(s_hour) + " 点到当天 " + str(e_hour) + " 点,每" + str(sleep_time) + "秒执行一次" + ";每日11点开始推送。" + "\n" + start_info += "时间配置:每隔" + str(e_hour) + "小时执行一次推送\n" + start_info += "启用源:\n嘶吼\n洞见微信安全资讯\n安全客\n先知社区\n" SendToFeishu(start_info, "程序信息") # print(start_info) SendToFeishu(rss_info, "RSS源状态") # print(rss_info) + + # 首次运行先暂停两分钟 + time.sleep(2 * 60) + + # 主程序 main_loop() \ No newline at end of file diff --git a/GotoSend_4hou.py b/GotoSend_4hou.py index a7374cc..4cec4b4 100644 --- a/GotoSend_4hou.py +++ b/GotoSend_4hou.py @@ -66,16 +66,14 @@ def get_4hou_json(): return total_data -def query_articles_within_time_range(s_hour, e_hour): +def select_articles(e_hour): conn = sqlite3.connect('./db/4hou.db') cursor = conn.cursor() # 获取当前日期和时间 now = datetime.now() - start_time = datetime(now.year, now.month, now.day, s_hour) - timedelta(days=1) - # print(start_time) - end_time = datetime(now.year, now.month, now.day, e_hour) - # print(end_time) + start_time = now - timedelta(hours=e_hour) + end_time = now # 查询指定时间段内的数据 cursor.execute(''' @@ -103,7 +101,7 @@ def get_filtered_articles(entries): return result -def Src_4hou(s_hour, e_hour): +def Src_4hou(e_hour): if not os.path.exists('./db/4hou.db'): # 创建数据库和表 create_database() @@ -118,17 +116,19 @@ def Src_4hou(s_hour, e_hour): insert_data(M_4hou_data) # 查询指定时间段内的数据 - filtered_articles = query_articles_within_time_range(s_hour, e_hour) + filtered_articles = select_articles(e_hour) # print(filtered_articles) if filtered_articles: results = get_filtered_articles(filtered_articles) - SendToFeishu(results, "4hou资讯递送") + print("嘶吼资讯递送中:") + SendToFeishu(results, "嘶吼资讯递送") + print("-" * 40 + "\n") # print(results) else: # 如果为空,则跳过执行 - print("4hou数据为空,跳过执行。") + print("嘶吼数据为空,跳过执行。") # print(results) if __name__ == "__main__": - Src_4hou(11, 11) + Src_4hou(4) diff --git a/GotoSend_anquanke.py b/GotoSend_anquanke.py index 15985a0..f54147b 100644 --- a/GotoSend_anquanke.py +++ b/GotoSend_anquanke.py @@ -59,16 +59,14 @@ def get_anquanke_json(): return total_data -def query_articles_within_time_range(s_hour, e_hour): +def select_articles(e_hour): conn = sqlite3.connect('./db/anquanke.db') cursor = conn.cursor() # 获取当前日期和时间 now = datetime.now() - start_time = datetime(now.year, now.month, now.day, s_hour) - timedelta(days=1) - # print(start_time) - end_time = datetime(now.year, now.month, now.day, e_hour) - # print(end_time) + start_time = now - timedelta(hours=e_hour) + end_time = now # 查询指定时间段内的数据 cursor.execute(''' @@ -96,7 +94,7 @@ def get_filtered_articles(entries): return result -def Src_anquanke(s_hour, e_hour): +def Src_anquanke(e_hour): if not os.path.exists('./db/anquanke.db'): # 创建数据库和表 create_database() @@ -111,12 +109,14 @@ def Src_anquanke(s_hour, e_hour): insert_data(M_anquanke_data) # 查询指定时间段内的数据 - filtered_articles = query_articles_within_time_range(s_hour, e_hour) + filtered_articles = select_articles(e_hour) # print(filtered_articles) if filtered_articles: results = get_filtered_articles(filtered_articles) + print("安全客资讯递送中:") SendToFeishu(results, "安全客资讯递送") + print("-" * 40 + "\n") # print(results) else: # 如果为空,则跳过执行 @@ -124,4 +124,4 @@ def Src_anquanke(s_hour, e_hour): # print(results) if __name__ == "__main__": - Src_anquanke(11, 11) + Src_anquanke(4) diff --git a/GotoSend_doonsec.py b/GotoSend_doonsec.py index bc31d6c..0db946a 100644 --- a/GotoSend_doonsec.py +++ b/GotoSend_doonsec.py @@ -66,16 +66,14 @@ def get_doonsec_json(): return total_data -def query_articles_within_time_range(s_hour, e_hour): +def select_articles(e_hour): conn = sqlite3.connect('./db/doonsec.db') cursor = conn.cursor() # 获取当前日期和时间 now = datetime.now() - start_time = datetime(now.year, now.month, now.day, s_hour) - timedelta(days=1) - # print(start_time) - end_time = datetime(now.year, now.month, now.day, e_hour) - # print(end_time) + start_time = now - timedelta(hours=e_hour) + end_time = now # 查询指定时间段内的数据 cursor.execute(''' @@ -104,7 +102,7 @@ def get_filtered_articles(entries): return result -def Src_doonsec(s_hour, e_hour): +def Src_doonsec(e_hour): if not os.path.exists('./db/doonsec.db'): # 创建数据库和表 create_database() @@ -119,12 +117,14 @@ def Src_doonsec(s_hour, e_hour): insert_data(M_doonsec_data) # 查询指定时间段内的数据 - filtered_articles = query_articles_within_time_range(s_hour, e_hour) + filtered_articles = select_articles(e_hour) # print(filtered_articles) if filtered_articles: results = get_filtered_articles(filtered_articles) + print("洞见微信安全资讯递送中:") SendToFeishu(results, "洞见微信安全资讯递送") + print("-" * 40 + "\n") # print(results) else: # 如果为空,则跳过执行 @@ -132,4 +132,4 @@ def Src_doonsec(s_hour, e_hour): # print(results) if __name__ == "__main__": - Src_doonsec(11, 11) + Src_doonsec(4) diff --git a/GotoSend_xianzhi.py b/GotoSend_xianzhi.py new file mode 100644 index 0000000..4dc842f --- /dev/null +++ b/GotoSend_xianzhi.py @@ -0,0 +1,131 @@ +import json +import sqlite3 +import os +from datetime import datetime, timedelta +from SendBot import SendToFeishu + +def create_database(): + conn = sqlite3.connect('./db/xianzhi.db') + cursor = conn.cursor() + cursor.execute('''CREATE TABLE IF NOT EXISTS articles ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title TEXT, + link TEXT, + published DATETIME + )''') + conn.commit() + conn.close() + +def insert_data(data): + conn = sqlite3.connect('./db/xianzhi.db') + cursor = conn.cursor() + for entry in data: + try: + # 解析 published 字符串为 datetime 对象 + pub_date = datetime.strptime(entry['published'], '%Y-%m-%dT%H:%M:%S%z') + # 格式化 published 为所需的格式 + formatted_pub_date = pub_date.strftime('%Y-%m-%d %H:%M:%S') + # print(formatted_pub_date) + except ValueError: + # 如果解析失败,使用原始 published 字符串 + formatted_pub_date = entry['published'] + + cursor.execute(''' + INSERT INTO articles (title, link, published) + VALUES (?, ?, ?) + ''', (entry['title'], entry['link'], formatted_pub_date)) + conn.commit() + conn.close() + +def get_xianzhi_json(): + # 检查文件是否存在 + if not os.path.exists('./JSON/xianzhi.json'): + raise FileNotFoundError(f"xianzhi.json文件不存在,请检查程序是否运行正常!") + + # 打开并读取JSON文件 + with open('./JSON/xianzhi.json', 'r', encoding='utf-8') as file: + data = json.load(file) + + # 假设data是一个包含多个JSON对象的列表 + if not isinstance(data, list): + raise ValueError("JSON文件格式错误,请检查common.py是否异常!") + + # 提取所需字段并编号 + total_data = [] + for index, item in enumerate(data, start=1): + entry = { + "id": index, + "title": item.get("title", ""), + "link": item.get("link", ""), + "published": item.get("published", "") + } + total_data.append(entry) + + return total_data + +def select_articles(e_hour): + conn = sqlite3.connect('./db/xianzhi.db') + cursor = conn.cursor() + + # 获取当前日期和时间 + now = datetime.now() + start_time = now - timedelta(hours=e_hour) + end_time = now + + # 查询指定时间段内的数据 + cursor.execute(''' + SELECT * FROM articles + WHERE published BETWEEN ? AND ? + ''', (start_time.strftime('%Y-%m-%d %H:%M:%S'), end_time.strftime('%Y-%m-%d %H:%M:%S'))) + + results = cursor.fetchall() + conn.close() + return results + +def clear_table(): + conn = sqlite3.connect('./db/xianzhi.db') + cursor = conn.cursor() + cursor.execute('DELETE FROM articles') + conn.commit() + conn.close() + +def get_filtered_articles(entries): + result = "" + for entry in entries: + result += f"文章:{entry[1]}\n" + result += f"链接:{entry[2]}\t上传时间:{entry[3]}\n" + result += "-" * 40 + "\n" # 添加分隔线以便区分不同文章 + return result + + +def Src_xianzhi(e_hour): + if not os.path.exists('./db/xianzhi.db'): + # 创建数据库和表 + create_database() + + # 清空表 + clear_table() + + # 获取 JSON 数据 + M_xianzhi_data = get_xianzhi_json() + + # 插入数据到数据库 + insert_data(M_xianzhi_data) + + # 查询指定时间段内的数据 + filtered_articles = select_articles(e_hour) + # print(filtered_articles) + + if filtered_articles: + results = get_filtered_articles(filtered_articles) + print("先知社区资讯递送中:") + SendToFeishu(results, "先知社区资讯递送") + print("-" * 40 + "\n") + # print(results) + else: + # 如果为空,则跳过执行 + print("先知社区数据为空,跳过执行。") + # print(results) + +if __name__ == "__main__": + Src_xianzhi(100) diff --git a/JSON/4hou.json b/JSON/4hou.json index 44a8c11..f6d2f13 100644 --- a/JSON/4hou.json +++ b/JSON/4hou.json @@ -3,35 +3,35 @@ "title": "Windows 在新的网络钓鱼攻击中感染了后门 Linux 虚拟机", "link": "https://www.4hou.com/posts/rpMk", "description": "

一种名为“CRON#TRAP”的新网络钓鱼活动通过 Linux 虚拟机感染 Windows,该虚拟机包含内置后门,可以秘密访问公司网络。

使用虚拟机进行攻击并不是什么新鲜事,勒索软件团伙和加密货币挖矿者利用虚拟机来秘密执行恶意活动。然而,威胁者通常在破坏网络后手动安装这些软件。

Securonix 研究人员发现的一项新活动是使用网络钓鱼电子邮件执行无人值守的 Linux 虚拟机安装,以破坏企业网络并获得持久性。

网络钓鱼电子邮件伪装成“OneAmerica 调查”,其中包含一个 285MB 的大型 ZIP 存档,用于安装预装后门的 Linux 虚拟机。

该 ZIP 文件包含一个名为“OneAmerica Survey.lnk”的 Windows 快捷方式和一个包含 QEMU 虚拟机应用程序的“data”文件夹,其中主要可执行文件伪装为 fontdiag.exe。

启动快捷方式时,它会执行 PowerShell 命令将下载的存档解压到“%UserProfile%\\datax”文件夹,然后启动“start.bat”以在设备上设置并启动自定义 QEMU Linux 虚拟机。

\"cron-trap.webp.png\"/

Start.bat批处理文件安装QEMU Linux虚拟机

安装虚拟机时,同一个批处理文件将显示从远程站点下载的 PNG 文件,该文件显示虚假服务器错误作为诱饵,这意味着调查链接已损坏。

\"error.webp.png\"/

显示假错误的图像

名为“PivotBox”的定制 TinyCore Linux VM 预装了一个后门,可保护持久的 C2 通信,允许攻击者在后台进行操作。

由于 QEMU 是一个经过数字签名的合法工具,因此 Windows 不会对其运行发出任何警报,并且安全工具无法检查虚拟机内运行的恶意程序。

\"lnk-contents.webp.png\"/

LNK 文件内容

后门操作

后门的核心是一个名为 Chisel 的工具,这是一个网络隧道程序,经过预先配置,可通过 WebSockets 与特定命令和控制 (C2) 服务器创建安全通信通道。 

Chisel 通过 HTTP 和 SSH 传输数据,允许攻击者与受感染主机上的后门进行通信,即使防火墙保护网络也是如此。

为了持久性,QEMU 环境设置为在主机通过“bootlocal.sh”修改重新引导后自动启动。同时,会生成并上传 SSH 密钥,以避免重新进行身份验证。 

Securonix 突出显示了两个命令,即“get-host-shell”和“get-host-user”。第一个在主机上生成一个交互式 shell,允许执行命令,而第二个用于确定权限。

然后可以执行的命令包括监视、网络和有效负载管理操作、文件管理和数据泄露操作,因此攻击者拥有一组多功能的命令,使他们能够适应目标并执行破坏性操作。

\"ash.webp.png\"/

恶意分子的命令历史记录

防御 QEMU 滥用

CRON#TRAP 活动并不是黑客第一次滥用 QEMU 与其 C2 服务器建立秘密通信。

2024 年 3 月,卡巴斯基报告了另一场活动,威胁者使用 QEMU 创建虚拟网络接口和套接字类型网络设备来连接到远程服务器。

在这种情况下,隐藏在仅运行 1MB RAM 的 Kali Linux 虚拟机内的一个非常轻的后门被用来建立一个隐蔽的通信隧道。

要检测和阻止这些攻击,请考虑为从用户可访问的文件夹执行的“qemu.exe”等进程放置监视器,将 QEMU 和其他虚拟化套件放入阻止列表中,并从系统 BIOS 禁用或阻止关键设备上的虚拟化。

", - "pubDate": "Mon, 02 Dec 2024 14:44:41 +0800", + "pubDate": "Mon, 04 Dec 2024 14:44:41 +0800", "author": "胡金鱼" }, { "title": "梆梆API安全平台 横向端到端 纵向全渠道", "link": "https://www.4hou.com/posts/om8A", "description": "

\"微信图片_20241202143941.jpg\"/

", - "pubDate": "Mon, 02 Dec 2024 14:43:57 +0800", + "pubDate": "Mon, 04 Dec 2024 14:43:57 +0800", "author": "梆梆安全" }, { "title": "静水深流 | 第2届BUGPWN TSCM黑盒挑战赛 • 顺利闭幕", "link": "https://www.4hou.com/posts/l0X7", "description": "

\"1.jpg\"

声明:以下内容均来自RC²反窃密实验室联合承办的正式赛事活动,活动均已向监管单位报备,一切均在合法、合规、可控下开展,仅供交流与参考

01 电磁信息安全联合实验室

RC²与深圳信通院成立的「电磁信息安全联合实验室」,隶属于深圳信通院电磁空间安全研究中心,是目前国内最大的集电磁安全技术研究、模拟场景测试、设备专业检测、TSCM专业培训于一体的TSCM领域安全技术研究实验室。

实验室占地700平米,内设4个符合国际TSCM标准的专业模拟测试间、1个专业信号屏蔽室、2个设备操作间和2个专业教室等。

\"2.jpg\"

\"3.jpg\"/

感谢中国信息通信研究院南方分院(深圳信通院)对RC²的认可与信任,本次BUGPWN事,得以再次在电磁空间安全研究中心成功举办~

专业词解读TSCM

Technical Surveillance CounterMeasures,即技术反窃密,是一套基于技术防护理念的商业秘密保护体系,包括通过专业检测技术侦测窃密器材和潜在风险,配合行业技术威胁情报,识别可能存在技术渗透的安全弱点等。

其中,BUGSWEEP反窃密检测服务,将对机构的技术安全状况进行专业评估,通常包括对目标机构及其周边开展彻底的信号频谱、电器线路和物理检查。以上解释来自RC²反窃密实验室

02 第2届BUGPWN比赛介绍

下面回顾第2届BUGPWN赛事的相关信息:

BUGPWN赛事命名

首先,BUGPWN的命名来源:

BUG,在TSCM中特指一切形式的窃密器材;
PWN,这个极客词汇带有破解、粉碎的含义;
BUGPWN,即包含”找出一切窃密器材”或“将一切窃密器材粉碎”的寓意。
BLACKBOX,即黑盒,渗透测试术语,指在对目标背景一无所知的情况下开展安全评估。

杨叔当初设定这个名字主要是受到了GEEKPWN大赛的启发,所以,也特别感谢GEEKPWN 国际极客安全大赛(现更名为GEEKCON创始人王琦(大牛蛙)、XCON安全峰会创始人王英健(呆神)、百度CSO陈洋及各位行业专家的大力支持与鼓励。

BUGPWN赛事主旨

BUGPWN 赛事的主旨,主要有:

• 为国内商业级TSCM安全技术团队,创建一个以交流国内外最新检测技术、经验、装备与行业威胁情报等,集实用与前瞻性为一体的互动平台;
协助企业级商业秘密保护体系的深度建设;
助力国内企业TSCM 技术团队的共同成长;
• 积极推进中国TSCM 行业的良性健康发展。

\"6.jpg\"

目前,BUGPWN TSCM 黑盒挑战赛技术专家评委池里,已包含英国、意大利、俄罗斯、日本及中国内地与香港等国家与地区的资深从业者。本届赛事的4位专家评委来自日本及中国内地与香港地区,明年预计将有更多海外专家评委加入BUGPWN。

\"7.jpg\"

BUGPWN赛事组织&承办

本届赛事组织方

• 中国信息通信研究院南方分院(深圳信息通信研究院)
RC²反窃密实验室

本届赛事承办方

• 中国信息通信研究院南方分院(深圳信息通信研究院)

比赛地点:

• 深圳信息通信研究院-电磁空间安全研究中心
\"8.jpg\"
BUGPWN赛事内容

第2届赛事分三个不同难度场景,来考核各参赛队的现场处理能力

每个场景都将在三个层面进行考核:

• 排查成功率

• 排查专业度

• 环境损坏度

简单解释下:

排查成功率,即在限定时间内对指定场景开展检测,找寻出不同难度系数器材(技术组评判)。

排查专业度,即在比赛期间,考核参赛团队间配合、装备的熟悉度等(专家评委评判)。

环境损坏度,本赛事充分考虑到实际场景,强调对商业环境的保护,没有复原环境或造成直接损坏的都将严重失分。

不过在充分考虑了第1届参赛队伍的参赛建议后,在第2届BUGPWN重新修订了技术分与评委分的占比,以及出题的侧重.....却没想到今年的比赛过程更是跌宕起伏,让人感慨不已~

以下是第2届BUGPWN TSCM 黑盒挑战赛的部分精彩片段。


BUGPWN TSCM 黑盒挑战赛 定位为遵循国际TSCM行业标准,采取定向邀请制的专业TSCM交流赛事,今年还在现场赛事结束后增加了闭门分享环节,主题是全球窃听器材的技术发展现状」,很遗憾不能公布太多细节。

今年第二届赛事的合作方已增加至30多家,特别感谢青藤云安全、百度安全、安卫普科技、赛安威视、ALUBA、香港侦探总会、安在、ASIS CHINA、HackingGroup、狮子会、骇极、上海中联律所等合作方对本届BUGPWN赛事的赞助与大力支持感谢大家共同参与推进国内TSCM商业秘密保护行业的发展~

\"19.png\"

03 我们2025再见

回顾第2届BUGPWN赛事,无论是组委会的国内外专家,还是本次多个受邀参赛队伍,以及为赛事保障的技术组和后勤组的小伙伴们,还有诸多合作方,数周来,大家都在为之努力和付出,在此由衷地向大家表示诚挚的感谢

比赛难度而言,BUGPWN组委会综合考虑了近些年全球商业窃密真实案例中出现的非法器材,及目前网络/黑市上正在销售的主要器材类型,并预估参赛队伍的水平,依托实验室的模拟训练环境专门设计了不同难度系数的场景。

\"21.jpg\"

从参赛团队技术水平来说,大部分参赛团队均来自大型跨国企业内部一线检测队伍,也都参加过RC²不同深度的课程,这可能会在经验和技能上造成一定偏差。

第1与第2届「BUGPWN TSCM 黑盒挑战赛主要面向国内TSCM专业团队的定向邀请,预计2025年,将邀请更多专业团队甚至海外专家、小组参加,我们衷心地期望BUGPWN能够通过国际赛事交流等方式,促进国内TSCM行业的进步和良性发展!

无论是参加赛事,还是日常从事BUGSWEEP工作,下面这句话来自国外某TSCM行业著作,杨叔也送给参赛的各位同学,共勉:

Remember, the walls have ears.

“永远保持警惕,隔墙有耳。”

2025,我们明年再见......

\"24.jpg\"

", - "pubDate": "Mon, 02 Dec 2024 14:42:22 +0800", + "pubDate": "Mon, 04 Dec 2024 14:42:22 +0800", "author": "RC2反窃密实验室" }, { "title": "梆梆加固“零”修改 率先完美兼容Android 16开发者预览版", "link": "https://www.4hou.com/posts/nl7Y", "description": "

Google于11月20日发布了Android 16的首个开发者预览版,梆梆安全基于移动应用预兼容加固框架技术,率先实现了“零修改”完美兼容适配Android 16首个开发者预览版

\"微信图片_20241202143348.jpg\"/

Google从Android 16起,改变了以往每年只发布一个大版本的节奏,以更快的迭代节奏实现新版本推送。

根据谷歌官方发布的时间表,预计Android 16将会在2025年Q2发布正式版本。

\"微信图片_20241202143414.png\"/

·2024年Q4发布Android 16开发者预览版;

·2025年Q1发布Android 16公开测试版;

·2025年Q2发布Android 16稳定版和正式版。

梆梆安全移动应用预兼容加固框架

梆梆安全作为移动应用加固技术领跑者,始终坚持以客户为中心,以技术为导向,基于多年移动应用安全技术的积累,建立了高效的Android系统预兼容、自适应的安全加固框架技术,可以第一时间完成对Android系统新版本的兼容适配支持,做好客户安全服务的基础保障工作。

目前,梆梆安全与Google、OPPO、VIVO、小米、荣耀、三星等手机厂商建立了全面的技术合作伙伴关系,共同开展Android系统、手机硬件、加固技术的多方协同验证,确保应用加固技术的兼容性、稳定性和安全性。

", - "pubDate": "Mon, 02 Dec 2024 14:38:22 +0800", + "pubDate": "Mon, 04 Dec 2024 14:38:22 +0800", "author": "梆梆安全" }, { "title": "梆梆安全发布《2024年Q3移动应用安全风险报告》,全国66.12% Android APP涉及隐私违规现象", "link": "https://www.4hou.com/posts/mk8E", "description": "

\"微信图片_20241202141906.jpg\"/

梆梆安全出品的《2024年Q3移动应用安全风险报告》来了!以梆梆安全移动应用监管平台2024年Q3监测、分析的移动应用安全态势为基础,为大家重点和深度分析国内移动应用攻击技术及安全趋势发展,为移动应用安全建设工作提供有效建议和参考。

01 全国移动应用概况

梆梆安全移动应用监管平台对国内外1000+活跃应用市场实时监测的数据显示,2024年7月1日至2024年9月30日新发布的应用中,归属全国的Android应用总量为203,224款,涉及开发者总量62,156家

从Q3新发布的APP分布区域来看,广东省APP数量位居第一,约占全国APP总量的20.02%,位居第二、第三的区域分别是北京市和上海市,对应归属的APP数量是34,301、19,843个。具体分布如图1所示:

\"微信图片_20241202141114.png\"/

图1 全国APP区域分布TOP10

从APP的功能和用途类型来看,实用工具类APP数量稳居首位,占全国APP总量的 19.92% ;教育学习类APP位居第二,占全国APP总量的13.78%;商务办公类APP排名第三,占全国 APP总量的9.44%。各类型APP占比情况如图2所示:

\"微信图片_20241202141147.png\"/

图2 全国APP类型分布TOP10

02 全国移动应用安全分析概况

梆梆安全移动应用监管平台通过调用不同类型的自动化检测引擎,对全国Android应用进行抽样检测,风险应用从盗版(仿冒)、境外数据传输、高危漏洞、个人隐私违规4个维度综合统计,风险应用数量如图3所示:

\"微信图片_20241202141300.png\"/

图3 风险应用数量统计

01 漏洞风险分析

从全国Android APP中随机抽取98,945款进行漏洞检测,发现存在漏洞威胁的APP为75,513个,即76.32%以上的APP存在中高危漏洞风险。在75,513款APP漏洞中,高危漏洞占比74.26%,中危漏洞占比96.74%(同一APP可能存在多个等级漏洞)。

对不同类型的漏洞进行统计,大部分漏洞可以通过应用加固方案解决。应用漏洞数量排名前三的类型分别为JAVA代码反编译风险、HTTPS未校验主机名漏洞,及动态注册Receiver风险。

从APP类型来看,实用工具类APP存在的漏洞风险最多,占漏洞APP总量的20.08%;其次为教育学习类APP,占比11.42%;商务办公类APP位居第三,占比9.17%。漏洞数量排名前10的APP类型如图4所示:

\"微信图片_20241202141339.png\"/

图4 存在漏洞的APP类型TOP10

02 盗版(仿冒)风险分析

盗版APP指未经版权所有人同意或授权的情况下,利用非法手段在原APP中加入恶意代码,进行二次发布,造成用户信息泄露、手机感染病毒,或其他安全危害的APP。从全国的Android APP中随机抽取770款进行盗版(仿冒)引擎分析,检测出盗版(仿冒)APP 762个,其中实用工具、新闻阅读、教育学习类APP是山寨APP的重灾区,各类型占比情况如图5所示:

\"微信图片_20241202141413.png\"/

图5 盗版(仿冒)APP类型TOP10

03 境外传输数据分析

2024年3月22日,中央网络安全和信息化委员会办公室正式发布《促进和规范数据跨境流动规定》,同时发布《数据出境安全评估申报指南(第二版)》和《个人信息出境标准合同备案指南(第二版)》以指导企业落实数据出境合规义务,充分体现我国通过加强数据跨境监管,维护国家安全的监管思路。、

从全国的Android APP中随机抽取17,462款Android APP进行境外数据传输引擎分析,发现其中1,549款应用存在往境外的IP传输数据的情况,从统计数据来看,发往澳大利亚的最多,占比53.58%;其次是发往美国,占比35.18%。无论是针对移动应用程序自身程序代码的数据外发行为,还是针对第三方SDK的境外数据外发行为,都建议监管部门加强对数据出境行为的监管。数据传输至境外国家占比排行情况如图6所示:

\"微信图片_20241202141450.png\"/


图6 数据传输至境外国家占比TOP10

从APP类型来看,实用工具类APP往境外IP传输数据的情况最多,占境外传输APP总量的18.66%;其次为其他类APP,占比12.33%;生活服务类APP占境外传输数据APP总量的8.65%,位列第三。各类型占比情况如图7所示:

\"微信图片_20241202141504.png\"/

图7 境外传输数据APP各类型占比TOP10

04 个人隐私违规分析

作为联网才能正常工作的移动应用,采集网络权限、系统权限以及 WiFi 权限是比较正常的,但移动应用是否应该采集用户短信、电话以及位置等“危险权限”,需要根据应用本身的合法业务需求进行分析 。

基于国家《信息安全技术个人信息安全规范》《APP违法违规收集使用个人信息行为认定方法》《常见类型移动互联网应用程序必要个人信息范围规定》等相关要求,从全国Android APP中随机抽取17,462款进行合规引擎分析,检测出66.12%的APP涉及隐私违规现象,如违规收集个人信息、超范围收集个人信息、强制用户使用定向推送功能等。各违规类型占比情况如图8所示:

\"微信图片_20241202141554.png\"/

图8 个人隐私违规类型占比情况

从APP类型来看,实用工具类APP存在个人隐私违规问题最多,占检测总量的18.14%;其他类APP存在的隐私违规问题占检测总量的12.01%,位居第二;教育学习类APP存在的隐私违规问题占检测总量的11.29%,位居第三。涉及个人隐私违规APP各类型占比如图9所示:

\"微信图片_20241202141604.png\"/

图9 个人隐私违规APP类型TOP10

05 第三方SDK风险分析

第三方SDK是由广告平台、数据提供商、社交网络和地图服务提供商等第三方服务公司开发的工具包,APP开发者、运营者出于开发成本、运行效率考量,普遍在APP开发设计过程中使用第三方软件开发包(SDK)简化开发流程。从全国的Android APP中随机抽取88,926款进行第三方SDK引擎分析,检测出95.24%的应用内置了第三方SDK。如果SDK有安全漏洞,可能导致包含该SDK的应用程序受到攻击

从APP类型来看,实用工具类APP内置第三方SDK的数量最多,占比20.23%;其次为教育学习类APP,占比11.9%;商务办公类APP位列第三,占比9.04%。内置第三方SDK应用各类型APP占比如图10所示:

\"微信图片_20241202141642.png\"/

图10 内置第三方SDK应用各类型APP占比TOP10

06 应用加固现状分析

随着移动APP渗透到人们生活的方方面面,黑灰产业也随之壮大,应用若没有防护,则无异于“裸奔”,对APP进行安全加固可有效防止其被逆向分析、反编译、二次打包、恶意篡改等。从全国的Android APP中随机抽取148,607款进行加固引擎检测,检测出已加固的应用仅占应用总量的38.11%

从应用类型来看,APP加固率排名前三的分别是政务、金融、新闻类APP。不同APP类型加固占比如图11所示:

\"微信图片_20241202141711.png\"/

图11 不同APP类型加固占比

随着移动互联网的快速发展,以手机等移动智能设备为载体的移动互联网应用程序深入到社会生产生活的方方面面,移动端承载了越来越多企业及用户的生产业务和敏感数据,是整体安全体系建设的重要一环

而在外网防御越来越完善的今天,攻击者更喜欢在“移动端”上找到突破口,恶意软件猖獗、个人信息违规收集、数据恶意滥用等风险问题层出不穷,网络攻击愈演愈烈,漏洞威胁持续升级,对个人及企业的数据和财产安全构成严重威胁。

在信息技术应用创新发展的大趋势下,梆梆安全始终以客户为中心,以持续的研发投入和产品创新,从技术、服务两个层面建立全面的移动应用安全和物联网安全防护生态体系,构建了应用设计开发、应用测试、应用发布、应用运维在内的 APP 全生命周期安全解决方案,形成从保护、加固、检测到监管、测评、响应的全栈产品和服务能力,深入治理 APP、小程序、快应用等应用程序乱象,已经成为各行业厂商值得信赖的合作伙伴。

数字时代,移动互联网持续渗透,推动数字化、信息化深入社会生活发展的方方面面,移动端渠道的业务重要性与安全性的要求越来越高。在移动应用数量和业务丰富度爆发式增长的当下,梆梆安全勇担“保护您的软件”的企业使命,致力于应用技术百家争鸣,应用体验百花齐放,让互联网用户拥有更美好、更安全、更合规的数智生活。

", - "pubDate": "Mon, 02 Dec 2024 14:31:48 +0800", + "pubDate": "Mon, 04 Dec 2024 14:31:48 +0800", "author": "梆梆安全" }, { diff --git a/JSON/doonsec.json b/JSON/doonsec.json index c6f8651..368c559 100644 --- a/JSON/doonsec.json +++ b/JSON/doonsec.json @@ -5,7 +5,7 @@ "description": "根据提示输入内容执行,集成调用sqlmap\\\\x0d\\\\x0a泛微CheckServer-Sql注入,检测漏洞存在后,将payload字段下内容保存为req文件,使用sqlmap模块构造参数", "author": "星悦安全", "category": "星悦安全", - "pubDate": "2024-12-03T16:58:07" + "pubDate": "2024-12-04T16:58:07" }, { "title": "Linux通用应急响应脚本", @@ -13,7 +13,7 @@ "description": "Linux通用应急响应脚本,适用大多数情况,目前在ubuntu、centos7、kali上均可以正常运行。", "author": "Hack分享吧", "category": "Hack分享吧", - "pubDate": "2024-12-03T16:56:30" + "pubDate": "2024-12-04T16:56:30" }, { "title": "JAVA安全-反序列化系列-CC6(无依赖链)分析", @@ -21,7 +21,7 @@ "description": "CC6这条链是基于CC1的基础上,由于在CC1中使用到的AnnotationInvocationHandler类,也就是入口点,它的readObject()在java8u71版本后就进行了修改,导致在jdk8u71后的版本,cc1使用不了", "author": "菜狗安全", "category": "菜狗安全", - "pubDate": "2024-12-03T16:30:14" + "pubDate": "2024-12-04T16:30:14" }, { "title": "Palo Alto Networks PAN-OS身份认证绕过导致RCE漏洞(CVE-2024-0012)", @@ -29,7 +29,7 @@ "description": "Palo Alto Networks PAN-OS身份认证绕过导致RCE漏洞(CVE-2024-0012)", "author": "nday POC", "category": "nday POC", - "pubDate": "2024-12-03T15:43:29" + "pubDate": "2024-12-04T15:43:29" }, { "title": "一款快速等保核查、资产扫描工具", @@ -37,7 +37,7 @@ "description": "主要功能主机存活探测、漏洞扫描、子域名扫描、端口扫描、各类服务数据库爆破等~~", "author": "安全帮", "category": "安全帮", - "pubDate": "2024-12-03T15:13:26" + "pubDate": "2024-12-04T15:13:26" }, { "title": "Windows日志分析工具(GUI版)", @@ -45,7 +45,7 @@ "description": null, "author": "信安404", "category": "信安404", - "pubDate": "2024-12-03T14:50:25" + "pubDate": "2024-12-04T14:50:25" }, { "title": "Windows日志分析工具(GUI版)", @@ -53,7 +53,7 @@ "description": "骁佬终于把日志查询、内存检索、md5检索整合在一起了,还开发了GUI,有了自己公众号,给榜一大佬点点关注。", "author": "安服仔的救赎", "category": "安服仔的救赎", - "pubDate": "2024-12-03T14:46:21" + "pubDate": "2024-12-04T14:46:21" }, { "title": "安卓逆向 -- 某app破解下载和高清功能", @@ -61,7 +61,7 @@ "description": null, "author": "逆向有你", "category": "逆向有你", - "pubDate": "2024-12-03T14:08:29" + "pubDate": "2024-12-04T14:08:29" }, { "title": "Windows 在新的网络钓鱼攻击中感染了后门 Linux 虚拟机", @@ -69,7 +69,7 @@ "description": "Securonix 研究人员发现的一项新活动是使用网络钓鱼电子邮件执行无人值守的 Linux 虚拟机安装,以破坏企业网络并获得持久性。", "author": "嘶吼专业版", "category": "嘶吼专业版", - "pubDate": "2024-12-03T14:00:24" + "pubDate": "2024-12-04T14:00:24" }, { "title": "最近邻居攻击:X 罗斯 APT 如何利用附近的 Wi-Fi 网络进行隐秘访问", @@ -77,7 +77,7 @@ "description": null, "author": "securitainment", "category": "securitainment", - "pubDate": "2024-12-03T13:38:02" + "pubDate": "2024-12-04T13:38:02" }, { "title": "一次0Day漏洞Rce审计流程", @@ -85,7 +85,7 @@ "description": null, "author": "钟毓安全", "category": "钟毓安全", - "pubDate": "2024-12-03T13:28:36" + "pubDate": "2024-12-04T13:28:36" }, { "title": "关于缓存欺骗的小总结", @@ -93,7 +93,7 @@ "description": null, "author": "白帽子左一", "category": "白帽子左一", - "pubDate": "2024-12-03T12:01:48" + "pubDate": "2024-12-04T12:01:48" }, { "title": "记一次网上阅卷系统漏洞挖掘", @@ -101,7 +101,7 @@ "description": null, "author": "掌控安全EDU", "category": "掌控安全EDU", - "pubDate": "2024-12-03T12:00:13" + "pubDate": "2024-12-04T12:00:13" }, { "title": "干货|一文搞懂加密流量检测的解决方法和技术细节", @@ -109,7 +109,7 @@ "description": null, "author": "e安在线", "category": "e安在线", - "pubDate": "2024-12-03T10:34:52" + "pubDate": "2024-12-04T10:34:52" }, { "title": "混淆 API 补丁以绕过新的 Windows Defender 行为签名", @@ -117,7 +117,7 @@ "description": null, "author": "securitainment", "category": "securitainment", - "pubDate": "2024-12-03T10:24:00" + "pubDate": "2024-12-04T10:24:00" }, { "title": "二开哥斯拉-绕过cloudflare流量检测", @@ -125,7 +125,7 @@ "description": "WebShell\\\\x0d\\\\x0a\\\\x0d\\\\x0a上传了 但是遇到防火墙拦截了,哎,苦恼连接不上\\\\x0d\\\\x0a\\\\x0d\\\\x0a没办法经过测试发现是因为流量中的字段有敏感字段被拦截了,找了好几个人要了二开过的哥斯拉发现都不行,还是被检测被拦截,无奈只能自己手搓一个二开了", "author": "RongRui安全团队", "category": "RongRui安全团队", - "pubDate": "2024-12-03T10:23:40" + "pubDate": "2024-12-04T10:23:40" }, { "title": "任子行网络安全审计系统 log_fw_ips_scan_jsondata SQL注入漏洞", @@ -133,7 +133,7 @@ "description": "任子行网络安全审计系统 log_fw_ips_scan_jsondata 接口存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用xa0SQLxa0注入获取数据库中的信息之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。", "author": "nday POC", "category": "nday POC", - "pubDate": "2024-12-03T10:13:51" + "pubDate": "2024-12-04T10:13:51" }, { "title": "绕过CDN查找真实IP方法", @@ -141,7 +141,7 @@ "description": null, "author": "黑白之道", "category": "黑白之道", - "pubDate": "2024-12-03T10:08:31" + "pubDate": "2024-12-04T10:08:31" }, { "title": "一款内存马检测工具", @@ -149,7 +149,7 @@ "description": null, "author": "黑白之道", "category": "黑白之道", - "pubDate": "2024-12-03T10:08:31" + "pubDate": "2024-12-04T10:08:31" }, { "title": "Windows 自动登录配置指南", @@ -157,7 +157,7 @@ "description": null, "author": "网络个人修炼", "category": "网络个人修炼", - "pubDate": "2024-12-03T10:01:50" + "pubDate": "2024-12-04T10:01:50" }, { "title": "一次0Day漏洞Rce审计流程", @@ -165,7 +165,7 @@ "description": null, "author": "Jie安全", "category": "Jie安全", - "pubDate": "2024-12-03T10:00:35" + "pubDate": "2024-12-04T10:00:35" }, { "title": "二开哥斯拉-绕过cloudflare流量检测", @@ -173,7 +173,7 @@ "description": null, "author": "RongRui安全团队", "category": "RongRui安全团队", - "pubDate": "2024-12-03T09:57:03" + "pubDate": "2024-12-04T09:57:03" }, { "title": "应用内存中的后渗透利用-远程工具密码读取", @@ -181,7 +181,7 @@ "description": "新版本的todesk和向日葵已经无法从配置文件获取密码,而且常规的替换手法也已经失效", "author": "安全洞察知识图谱", "category": "安全洞察知识图谱", - "pubDate": "2024-12-03T09:54:28" + "pubDate": "2024-12-04T09:54:28" }, { "title": "Windows常规应急", @@ -189,7 +189,7 @@ "description": "“A9 Team 甲方攻防团队,成员来自某证券、微步、青藤、长亭、安全狗等公司。", "author": "A9 Team", "category": "A9 Team", - "pubDate": "2024-12-03T09:44:45" + "pubDate": "2024-12-04T09:44:45" }, { "title": "蓝队应急响应-Linux日志分析及常用命令总结", @@ -197,7 +197,7 @@ "description": "蓝队应急响应-Linux日志分析及常用命令总结", "author": "网络安全实验室", "category": "网络安全实验室", - "pubDate": "2024-12-03T09:37:05" + "pubDate": "2024-12-04T09:37:05" }, { "title": "实战!一次超简单的网站后门利用体验", @@ -205,7 +205,7 @@ "description": null, "author": "中国电信安全", "category": "中国电信安全", - "pubDate": "2024-12-03T09:26:04" + "pubDate": "2024-12-04T09:26:04" }, { "title": "【新增PHP类型】蚁剑 | 哥斯拉免杀 过雷池、D盾、安全狗的 XlByPassWAF v1.1已更新!", @@ -213,7 +213,7 @@ "description": "新增PHP免杀Webshell\\\\x0d\\\\x0a过雷池、D盾、安全狗等WAF \\\\x0d\\\\x0a蚁剑 | 哥斯拉免杀", "author": "威零安全实验室", "category": "威零安全实验室", - "pubDate": "2024-12-03T09:15:21" + "pubDate": "2024-12-04T09:15:21" }, { "title": "【新增PHP类型】蚁剑 | 哥斯拉免杀 过雷池、D盾、安全狗的 XlByPassWAF v1.1已更新!", @@ -221,7 +221,7 @@ "description": "新增PHP免杀Webshell\\\\x0d\\\\x0a过雷池、D盾、安全狗等WAF \\\\x0d\\\\x0a蚁剑 | 哥斯拉免杀", "author": "爱喝酒烫头的曹操", "category": "爱喝酒烫头的曹操", - "pubDate": "2024-12-03T09:14:56" + "pubDate": "2024-12-04T09:14:56" }, { "title": "【漏洞复现】OfficeWeb365 SaveDraw 任意文件上传getshell漏洞", @@ -229,7 +229,7 @@ "description": "【漏洞复现】OfficeWeb365 SaveDraw 任意文件上传getshell漏洞", "author": "白帽攻防", "category": "白帽攻防", - "pubDate": "2024-12-03T09:10:26" + "pubDate": "2024-12-04T09:10:26" }, { "title": "新型网络钓鱼活动利用损坏的 Word 文档来逃避安全保护", @@ -237,7 +237,7 @@ "description": "攻击者利用损坏的Word文档钓鱼", "author": "军哥网络安全读报", "category": "军哥网络安全读报", - "pubDate": "2024-12-03T09:01:01" + "pubDate": "2024-12-04T09:01:01" }, { "title": "一次0Day漏洞Rce审计流程", @@ -245,7 +245,7 @@ "description": null, "author": "进击安全", "category": "进击安全", - "pubDate": "2024-12-03T09:00:59" + "pubDate": "2024-12-04T09:00:59" }, { "title": "JS逆向系列12-深入Js Hook", @@ -253,7 +253,7 @@ "description": null, "author": "Spade sec", "category": "Spade sec", - "pubDate": "2024-12-03T09:00:48" + "pubDate": "2024-12-04T09:00:48" }, { "title": "vulnhub之Matrix-2的实践", @@ -261,7 +261,7 @@ "description": null, "author": "云计算和网络安全技术实践", "category": "云计算和网络安全技术实践", - "pubDate": "2024-12-03T08:57:56" + "pubDate": "2024-12-04T08:57:56" }, { "title": "针对【中文】和越南语【用户】的新型【恶意软件】“CleverSoar”", @@ -269,7 +269,7 @@ "description": null, "author": "安小圈", "category": "安小圈", - "pubDate": "2024-12-03T08:45:48" + "pubDate": "2024-12-04T08:45:48" }, { "title": "【漏洞复现】Apache OFBiz远程代码执行漏洞(CVE-2024-45195)", @@ -277,7 +277,7 @@ "description": "星标公众号,及时接收推文消息", "author": "Z0安全", "category": "Z0安全", - "pubDate": "2024-12-03T08:42:15" + "pubDate": "2024-12-04T08:42:15" }, { "title": "针对银狐一些最新攻击样本加载过程的调试分析", @@ -285,7 +285,7 @@ "description": "针对银狐一些最新攻击样本加载过程的调试分析", "author": "安全分析与研究", "category": "安全分析与研究", - "pubDate": "2024-12-03T08:40:42" + "pubDate": "2024-12-04T08:40:42" }, { "title": "开源的Webshell管理器--游魂", @@ -293,7 +293,7 @@ "description": null, "author": "菜鸟学信安", "category": "菜鸟学信安", - "pubDate": "2024-12-03T08:30:43" + "pubDate": "2024-12-04T08:30:43" }, { "title": "某通用系统0day审计过程", @@ -301,7 +301,7 @@ "description": null, "author": "道一安全", "category": "道一安全", - "pubDate": "2024-12-03T08:12:18" + "pubDate": "2024-12-04T08:12:18" }, { "title": "内存马检测工具", @@ -309,7 +309,7 @@ "description": null, "author": "白帽学子", "category": "白帽学子", - "pubDate": "2024-12-03T08:11:23" + "pubDate": "2024-12-04T08:11:23" }, { "title": "Wireshark & Packetdrill | TCP RST 之连接不存在的服务端口", @@ -317,7 +317,7 @@ "description": null, "author": "Echo Reply", "category": "Echo Reply", - "pubDate": "2024-12-03T08:08:50" + "pubDate": "2024-12-04T08:08:50" }, { "title": "Windows权限控制相关的防御与攻击技术", @@ -325,7 +325,7 @@ "description": null, "author": "SecretTeam安全团队", "category": "SecretTeam安全团队", - "pubDate": "2024-12-03T08:02:54" + "pubDate": "2024-12-04T08:02:54" }, { "title": "利用js挖掘漏洞", @@ -333,7 +333,7 @@ "description": "在漏洞挖掘中,通过对js的挖掘可发现诸多安全问题,此文章主要记录学习如何利用JS测试以及加密参数逆向相关的漏洞挖掘。", "author": "李白你好", "category": "李白你好", - "pubDate": "2024-12-03T08:02:42" + "pubDate": "2024-12-04T08:02:42" }, { "title": "LLVM Pass转储类或结构的内存布局", @@ -341,7 +341,7 @@ "description": "面向LLVM Pass小白提供完整可操作示例", "author": "青衣十三楼飞花堂", "category": "青衣十三楼飞花堂", - "pubDate": "2024-12-03T08:00:35" + "pubDate": "2024-12-04T08:00:35" }, { "title": "漏洞预警 | PAN-OS Web管理界面身份认证绕过漏洞", @@ -349,7 +349,7 @@ "description": "PAN-OS设备管理Web界面中存在身份认证绕过漏洞,未经身份验证的远程攻击者可以通过网络访问管理Web界面,从而进行后续活动,包括修改设备配置、访问其他管理功能。", "author": "浅安安全", "category": "浅安安全", - "pubDate": "2024-12-03T08:00:13" + "pubDate": "2024-12-04T08:00:13" }, { "title": "AUTOSAR OS模块详解(二) Counter", @@ -357,7 +357,7 @@ "description": "本文主要介绍AUTOSAR OS的Counter,并对基于英飞凌Aurix TC3XX系列芯片的Vector Microsar代码和配置进行部分讲解。", "author": "汽车电子嵌入式", "category": "汽车电子嵌入式", - "pubDate": "2024-12-03T07:40:28" + "pubDate": "2024-12-04T07:40:28" }, { "title": "DedeCMS v5.7 SP2后台SSTI到RCE再到GetShell", @@ -365,7 +365,7 @@ "description": "影响范围DedeCMS v5.7 SP2利用条件登陆后台(有点鸡肋,但是可以结合DedeCMS的其他漏洞进行", "author": "七芒星实验室", "category": "七芒星实验室", - "pubDate": "2024-12-03T07:01:03" + "pubDate": "2024-12-04T07:01:03" }, { "title": "Windows钓鱼演练工具 -- xiao_fishing", @@ -373,7 +373,7 @@ "description": null, "author": "Web安全工具库", "category": "Web安全工具库", - "pubDate": "2024-12-03T06:44:33" + "pubDate": "2024-12-04T06:44:33" }, { "title": "文末获取 | 基于卡巴斯基虚拟化技术实现内核Hook", @@ -381,7 +381,7 @@ "description": null, "author": "星落安全团队", "category": "星落安全团队", - "pubDate": "2024-12-03T00:00:48" + "pubDate": "2024-12-04T00:00:48" }, { "title": "什么CNVD证书批量化挖掘 ?", diff --git a/JSON/xianzhi.json b/JSON/xianzhi.json index c181098..041306d 100644 --- a/JSON/xianzhi.json +++ b/JSON/xianzhi.json @@ -2,7 +2,7 @@ { "title": "记一次RAT的感染过程详细分析", "link": "https://xz.aliyun.com/t/16502", - "published": "2024-12-01T23:10:00+08:00", + "published": "2024-12-04T23:10:00+08:00", "id": "https://xz.aliyun.com/t/16502", "summary": { "@type": "html", @@ -12,7 +12,7 @@ { "title": "条件竞争glibc堆的详细讲解", "link": "https://xz.aliyun.com/t/16498", - "published": "2024-12-01T18:24:00+08:00", + "published": "2024-12-04T18:24:00+08:00", "id": "https://xz.aliyun.com/t/16498", "summary": { "@type": "html", @@ -22,7 +22,7 @@ { "title": "记某次金融小程序数据加密及签名逆向", "link": "https://xz.aliyun.com/t/16497", - "published": "2024-12-01T17:20:00+08:00", + "published": "2024-12-04T17:20:00+08:00", "id": "https://xz.aliyun.com/t/16497", "summary": { "@type": "html", @@ -32,7 +32,7 @@ { "title": "动态逃逸杀软的艺术", "link": "https://xz.aliyun.com/t/16486", - "published": "2024-12-01T10:12:00+08:00", + "published": "2024-12-04T10:12:00+08:00", "id": "https://xz.aliyun.com/t/16486", "summary": { "@type": "html", diff --git a/config.yaml b/config.yaml index a31c277..9e8375e 100644 --- a/config.yaml +++ b/config.yaml @@ -2,6 +2,4 @@ key: 22b68f21-def4-4bd5-96eb-71d78ee995f7 secret: 9gE9j1kT5bh9HvCyoPcIHc sleep_time: 35 # 秒数 # 结算时间范围 -s_hour: 11 # 开始时间,前一天的*点 -e_hour: 11 # 结束时间,当天的*点 -c_hour: 11 # 程序运行时间,当天的*点,建议与e_hour一致 \ No newline at end of file +e_hour: 4 # 程序运行时间间隔 \ No newline at end of file diff --git a/db/4hou.db b/db/4hou.db index 21e143d3d8a7da11e21a7a48194aef777fc942dc..ac841472ce480f3285fb57f77034e3af9e0c0b31 100644 GIT binary patch delta 969 zcmbu;+iM(E90%}x&zWhGW}7ofddY6G-EA&So2GU)J83QtvO)2s3X2y|u)1lQUTrt} zrIB6vTQh~wqjc;Z*M&dEvpQf;t% z2NFR#6HElziILIU3vYAX`uLq&Z(aJJ+3u|slTWBUzAZL1H0-j+nVt3+bBjH~?6rrP zaeIil-5z9awg;Gfc0Y52on~&b`P^GM&pn?dkU49xU(u7!<3AlP}emEqj_i#snAQhL$k7$gZE4G1QI&(smQ?Ic{?0DLW(Q@8HEI3`CdND0&5do5+WC za70c9c%ub97Yp#B9EMwPSh9QYwS)ChTEWGBQT+;C=ocraI5k_tb2XI1qOW2ypI6fc zJHxp#q@*{GA5BzJxfl-0*bNY_)9?W|-GZBnE zoOk)Fh&5ictXxmr%W6U4xLm5L=hsC)srzeCl-1j+vAJ=0=Cvn_(?>)5r}|Cquc#)2 zY*_hS4Snjf8$o!ZO=o1p)8813gi~GmbvcpNrww+C<7@uGXgK+(j!UwjZkh|qtNQm$ V$HTkF>zDcE)VaH-=k8X%_!pv*_B;Rp delta 971 zcmbu-U5HF!7zgnEzwbGA*N#2M$FeiKV`e|tWpnOr|

-!U`qcF4H2UpM=2*<*qSfumq z*+YE2xqRf!!HefBRiu!1_ll*n)#9?UvNqMr=~F$Nlhgvv8kOL5syOEi)y?Tq^EsQ; zTuzso!`Y}}oUJO#IZ<^Dc}ET0E%wQhG4an>o*a08;LL}^{U7o-&ic)vL9 zt0dyI`T+6{(&IR;V-B6{L3%7{0~j?f$QLkCZA4Y@xs)_drI1IAhEiB* zkmeUZHOwUu5vW5mX-UB!Z<=*x7+EVF7Y-UoiA@F?ti%fGBzIB{8^tWT9Eei%H10@r z7BeF5KsP0hirbQ;A23PlL!*WsYT1Er;L6^eC~A89J*Qeo&vv6($K>J*aY3M$F1`|L z$K{eRi;skEl0G87j=^I3@l}*pmItM*2ZSBcIIQXY%-g~rmz}j9|I?w!Rncpx!F|a zVa;qBo6goXaky9=Yh?B&e~Yy8y*M+#&9K|$RL`;iCYHa7Ppfq&0;jsiO1c{)N7q{GUv?b-}x~=Zq=!(@7Aq*Z@v4z z>?%cem7>T~uq*Z&CD?tjpvFN^psk}1i0K&Qc-Twr8=};PsC0kgZdSt1zZ#xd$Os+R$*VDy*xdvi)X`iv5y zETjN4GqdiJJ4s8)j-(aKB5BQ1N!qXlByHJLl6Gt~NqeRy>A?DubY#vXotT28xtLz- z`?~`u4wQ`W^s^$5H4PgYwlw6t_B0%5IMOi3w;lJsrY-b?-_REN;6Jp5KIlztp&#_x zw$KlJLtE$r|JWA#fY-K#egF;|8wHXQ^T$2~X$Tj`ofSYDjIk4%Kng~es6!wHVQbWF zkOuLliJlZ3h*u_k4pJb`pPV6}LfQZSpU(gEr!#Dw{6_pd+#MD7@<0l}{CmHEG=OK` z|AcO{KllHwAL)KL;Xye_eR=zXKr;Qg)59pzeQ^FGLi^$5$2B1N?t1o^oW1eIlY=1n zAbBNuTewVZ(w!}wc?46|`Iq;S{v&d!7 zy?*HuxcT24$go3~)>9za;;q&nL9)TG&s_z{8h3tw10*ZVIsXJCOWb&&1*Gmc;^IY+ zEYR%|6=jasE)i0}4_&sRG~M`DKPX89e|V*sw1CpJ(;%5)?DZ4CHgVq@ZM3VSbVMwR z4{7N}dLycj{QztOcR1chuwa>1W;%0hEpx-@uMPuS&uzZ8AXEnL`3;a>hps0M0!zm; zC(Z*~i@W}M64)9{{k9R=l$~IJFUj{as-^dNWUYAxA~p7r@k5pVkUYg&(f?30Np5uY3k9gl0~{ z^6xzH+^R{yl-zH18Oe(6c%4Z^~8lxPr-%s5IW{WvnIEdsGI zvldtYrf#582H>ELcYyUr_bghaAAg=@O~<}qF0j71Xu&C9{umNRxIX-DTz5+1hYuH0 zoxb!n(r$a>`bFOW^TEi3Tfn?=z~UBQUi|jrV1jyb_oV|#d+;%dg{0m2#bxsM;)Yk3 zAE6hiG|3y7E7m9dS*9?_WVrCmWH0%#Dor7)7q3qlC|fsE`=Uk6_rRR_)tFM5ND#qM z5|L1~*X7A9;w58BXFaiC$_1JbKh+;t56-5B$d==c;xX+zirN}BcT{cZ`1DI%7PG;+S$BvjQBF1G)XY}C z%D0GFWBu$_VpwuWL!40#94ItaFx_Zog_U!*(pq72hXAw0C3DNj5au}p>rR9r3K!0c zmJ5xLPev2b*}TmtHoi=pW6vz`)Vw={Z6vBRrwkia=8NqN*A>1YNhPfOy+iD>^>SbD6t){|9M)*!k zh)d3i5;xV`b{7KWv|*N%R?ITYu@v?MnxLAYTBT}AYRZx+YZ6}_)wZ2orIos1aigVK zl>8X=#@_QH4artQjLbTf^3GJ635h1oO%!>kxWRDVO4vr})2yj3G1E|JEo_yECSi$D zhjcX-6YXw0lu!4j8!WDuAE(m)63@*NGwSc#2zLaTw9DP4)r9r(8c9> Y8{#a5r2577!p2v?P?c7#{0|%XCr`}UtN;K2 delta 3179 zcmeHJX;_p;66UK6H*zR)iy&So>M#e#sHotDsGy>F#T5}1gLt3BW9asdf|PL(QCM9g z5#!Y%gCL8?CMGIwaMdKDJRS^(;uVcI$<{Zx`#k%s{@)+_qpPO6-mdDey6c@@Q=nK= zpvdx;thf0@N!G`v7CA|l=-})NtUU%fm-?vvf|WXzMyFIROio(7AZ1ZvO4^*{v_<-{ z%om>|e}-FKv>s-VTBFmdl1+ygEtNrATk&VYX_T6b9;~g1 z_Vkiur&cF#IizK$rjo-M{>)XZ@N$ye%uWqC!_%fGF87OzjbdF{8)>_20bCA5veyt1{nwa#7X~VkO(jrsV0p`eD!~)+aDaM({Sy)&& z@c|?qxt3%r-kGEWcPDAjZAjX&bdt6#m81=uOwyVSCuzm{kaS@|Bo(avalhZ40LEwc z@Am(5|DQhhk;~)@em~X|6-syiR&;s}H0){E(Xgc-D;f&y<9yIZ^}!a_kNbBE zn?e88!uql17FL;CSRZe0VM2bWh4o|1Elh~_wy=J*xrNQ{_qMQpR7(r1%q^^sGq*6o z-`m3aSd0jb0X`l#hrR}$Al8Rnl7NrH1YJ4svFO(O1n_vQ>U|IR7*XEGo1CNZdfy|! zM~Tf5%OzAiz6z|5sD7LycO$WclDbh{SG-nk#TMFG%6j9LU$0Wllb!|u(}@jFL*x^v zc;*f)9Djaxh>W$r`2!2X!rv;03FRQF4uQvp}6{a79pKq(6SH= zd?E83!KjkKVU2nu0(_S+glX~Si`|4xe@QH+LBq>80cNa5sne)hP(%iGd$MXvw$>MH zumAEJ{VJx$;#W;XHxyGtF|`ww@8V5oDm1>XBASw2S|VQAaWvDEw?RLU1!Ml39h58N zZ7*O-ocVSq8B((=uwHbMF*vO`R^Dj1Tp4Y6L&YxB`m&b58IG(cUTAJ2e97-rnI7Wi z@2$*t^AEb4x26Caj?-^l02YJ6w@ZNy6Ax}%OTeP>`JEqt4aL)UjlhQBirVjh4aP{* zU0{Q-OWkQ;1I4|%9t4dNo(nWP7ZYxh1P-5;y(pQOAwP3?g7Lu1ol$e8?q zj0lnbz(?Lh&O@^L3gg3WvUTTCN3{C!2(Za${ILqyB-~VW8`wmgbNLOh3AknZ2+Ym& z#>@X00c^bRzp|6EB;d)bCxDH^rPm69jTQbsrP6FXX8wE(*ccJ{%PBJHLRS|98--=n z$AQJ++#B?%vDp1)6R?r!SwmSyh_^L%5?Y97pP>7h)4*oq^)pX^rHIP2 zximXVqhi!uM_tIX0uLO!3~aebKYo$SWf=YS z9bikbNAV+ION8$?AvC)f#~BNNEy9<^YG4cTYRPk83$XG;treSZYoQOssuS*bsk9Q< zJltLO3fNqcbFz?DreWk?ZvdNveigN-D2N7bBVr5AQukR4*S#A_TZ#OAF{CXG{p_V^ z)b5`NTp{-CPoueygyVtvqyhDXM&OdreK~|o3uFiBJ6B`Bq6%QEvJV{uwo)8Aw1*OY zDuy2}r3zU7MLOizt1fh1wriUyDGS-7|pO_?(MwOaly^c+#xKA-3MbY&>!{~CCEtXzKuxG(P8a2|L&oV&3MxDN(x`T@ANc(JJ!LA`|4XJ<%zit}5RkoLgH z%(KFBo)i7nqTBonz%_Vx{w?5Y{B}V#a24)dSOYv5GZwu9uEdp#PXq6T{g+U^dZNeD zGr)V`jirPP5+|0~Qkd@IZ_AaWyNTy3wvi6Rjh|iw-W3y8o&(-R_^qmygktJf*SAJpzZt=K>!t>f+_P z#|W2k@}(MvQxXUrjU&ew0Ux^W&3Kv|g3S}Cyn|6pYz96Ek58f#9*9Mg-vE!o!jI_> zBT~$qvRf)vNa1v)f{gtnX#{bHVGBsaZrzQ?!EEnPNPfV&89FGW!{n_}NJKP&hQ|u& z0hu+HvbXCFE9pgBGi_=##JK~){o<1o=VZjNE=C7yDNqg@Vk3v`Y?x#t9SAf-wV^tt zdi311nWGn{ykq%YdmD4|^*vZ88;cnE4z|bk&5?#Vwo;t@>Qu_4tkw=oF~7O#i5$v0 z8m`z%yD0oTJ9%FLhD%A*pRHp4#wYet vlO#Xd2%s|cTVS$CQY53i*2wwof!wHOVcC-Xvw81b&LZJ#-_GI zLfURQNw@^UEg=`eEu=|HbAhC}Krke~MjEZOKUSLG)o$f;jxDX!U8!1WcmM43ozM7? zv^iv?rj=H<2mu4{_kHjEeDCwV<=fu$MZE0ZV5r_5VMXRAOhyLtCzfRxCL8~9@NfQ= zfiK8=^DpxKVy|pwePd@Xek(ICgUKt$r}Qh$fiwrw97uB@&4Dxr(i}*0AkBd^2hto! zb0E!uAAnK@6dTbHpT;@;!;hTr$&X}BuveSg0<;CcAltirNlXGJkv;oSIUG5gT( zt_is7y)WZ0*GeyCEP49*=Q9q!sL^zXB0djD&;OtK0G0W7*)_}AS^1eqXrO zTg?{X2o)upi!};sP2hQE-ZzBv*?Iqy_suFX_g3z%+>Dh2D}TM>@`~*%RxFP$-?QAb z?BcT0rT?*XY^iI>KP~a+{CCbs&JL4o>NLHQ{blwCS^t$ako8jLM5Z<4uNj_OJz%xVO>mk4;}w&mEON9Z>tnYa@|{uw%o9gNN3;{l2FCf%TqX z{f5W}-X@Cq0w-9^JZ~0wRuCM5)nT!eNh?i^%O%!%LjkWp7VVa=_oxGNa{G1p;%Dlm zku~z*;94W11rHLnav-`}T47>#8xW1n^shBn`$CbXss>+!*NDFTA^HUl3m=e{o0yMX zqTJe|&h;tNXA;dl%J7lIK(Er%D|fZ6-sBDK@rHuodLt!sl>Gjs}tI20UzSyO9UpF|B zg@14X3l7p?ii0vcdOBM<=Tb#{XuoS(`aE!YGHxp>{!)d6`G_aSomiy(b?ek)Oy+1 zy`jjVjb7Yb{hnWMThFoO0e78uhr8Y{_jJiKJ#zaQ`S@vNwnw=&vZnCuVzWlmB8Y-$ zq$U>Yg0*?*p3T8=eksSqeBcs`HW#u^U&t3=H~ND$Y^i^L4ZdEu9-CUpDp+_?Zf^y9 zjE<_Sy1-&N3lBN&luRb3(j~s(eA_8c9FtqdV|P1UpV$0e3~-G!UWS$B24FHp7D z2Uoeip|(M1qD8RU?Ta$es#^kGg6PXmDU&kM-RP!F#1Z7t8Fj3gDup~T7M~cCCq|U^ zvj+RO>Q(^a@I)MlZ4^-mhn6Ba0#z&S)a zgiz4Y4&gvgyEOTOTZ!3jWq4BV>Y&V8lNdgc zxHo_$Dc9uwNgN1LS^HIUKR(LJopQ%{d9rm;Y1?!|(-ybFH(RzhnV52yn2Z5Dw}Izb zE#6JgL$aw;8XU{EP>&!a5n8}+KByTPksuo%YEDQe_Q9Qj?NBiqu;A(Bt}{mTbs1ZT+vaSLaap65ppfk% zIK~fu0U@xZ2Lg#Bzx;>IVDwdN~-2WbF19j zN1dF(0{Oc1umD77M+USjVq$i<#9d_9sZ~;o>~1&^Fnipg>UwuL;td%Q*WILr=p{+7 z_{y;6)so50?M~zZtJRqciL;{!XtDcaiZrS8-$@L%8WGmL8VJL)6MwlSWMcm45(~GK zmy;ByvUnp+nv&^AsS!P0HLNVpJA`~Vn@#U)nd$@Xx5QbIIM*9LW8`x4b@u{d7Ep3n zY^4n*rqCts^F|^~#1iCdXA_@aRYr~`n$It4Vg-7507V;OjYH%bgRpPpTuB>KqqB(1 zl&e)m6`uNVRs8;t(*0RYFcKt3kIzlQyO5Z!Wt@oS)bSXwr9d}8tecM*4L0u&VBHn) zib~4N1-vyG%NNUK?Yi5vu?SKe{0q0; zuX(O-C6o(k#-@+S?E{ZyoQ2aF2g-;r@CICEou>E?ByewR-VW9z&VHeu?^i#+vzR7W zc-_b36WtP!8gd`)gG8QliFp1ga+WLS`jnwj<#-=b7(_+z3633Z623+mzNGfH!XEtY zP>pwwFW`nn=dIo(}ceJ-N4wI#Pp`>`9r>mGT{M zbWo$cni?s?V=y}P%1CVHSdHJe$0MI7XZo-v!yjs?PGeE95 zLz%OJ2=M5rGI}z8zYQm$)ECnwB*-)k67X1_BU$j-B;}IYd`8}XGWbZp(i}*0AkBd^ z2hto!b0E!uGzZcgNOK^~fiwrw97uEE{|g6lGqRq~oJSone<9ERKVQ0^$s5Vrvg*&P znpVA#`_H)>R{rbCj+NOfrdL$2cxw5r<%P@sec9P%Tb3$I_ditsKW=(8``@xZ&idc1 z(JVgmPUasnzRU<@K_;h@Vh4r1o$nzlm5YR z0KdVyKN1Y!*FPu<;Dsj%0${<#9~lGit0xWt_=hKm0C@iU1pxg0ldAte2SNYP_5WwT zkNW>JPp*z=3|W`u|gZOZ`6}y{^SUWndSkxq&gLzRQpiIc@D4Wq=aiOn20z-|eaR0W;aa3rX4TkKxRWn${JikY&YY(;9K z*FKHiJ+Gc=Q6^82N^k!hMPJa$%A>15f{r&L>j2?FN@FhRH50>A38Ku~t( zvSK4jsj4|Bp>hcLmxbRZ6`PpiB&FIq4}fl-$X=E`;N8PgEP)aBL9nI@cZ4Re5BLx& zq#_fu$t6ZS1UyH%iW)rq*4z;Eg@XZKpvGvcsX8ZbVL23tQHmD>QX!S*P&3dme^Z%w zv6_`&P1Om>f_4XL^&I!Ev{6fIP!dbrC8a!IEcOMP-riWwn(-+X{X{)4DN|F*6woZg zO7{h$6QzpxbOFH*r0JWI)5N?2c;n4M`QC)r9NfFt=kWq40EA&#p`k2O^;(ca6_ON8 z?c1b3>9Q;;-$>93-b05DRfWS5AB*apVO3Dj%j1+LAebCiBK^_CSanSUNvOu6w5+;y zV1I(cYJuWPnbIHNJAOx?Nv*M&D~YkY>fi*0|HWp{D7QN|EJSapR|eF>ch!NYJa{32WK4FP1!mXtd8M{2zRK)>A)UoZfOM5B*j>*5m^Q1BwoP(8tY}qo*Qxl-6@o&dm?iVrn0}Dhs-7$YTIf6!LXXr(u3j`xk6gl2wC#Q7|Y) zCb58htPh1l9^e+@b92D-`~99^wKq21q0Zbl+OaNPiYfwBNg&VvYXR2JyO8(#sxMa^ zPvif;-Bggq|IfE!0H~A3|EKZ)Y5ad0|G%JB%bLnXgf#x2cCT4eDGyjeo(|La|74fL zqZ1S{jsF*Ispm7aJEZad^Ua`ovJJMR@&BaHGL8R73qTtGpT_^wesN1d8vk$HW~}4? zNrwcSDCvOV$n*b;%p{X{Fz=aFv#Z>zvT{GkEm`^Jm9;CB6-~>(S-uaw|Cg7QFUwha zWogxtzbaVmv>Un2~E6++gG0%w8dh+QoSMexEYaOYb^Ae7&TIbyie3 z3pe4yg~Nye{?Vz6kgs1BT3IydkZA>Cr6gztJ+fI`W8&Tq*KlYzRwvHjV)HRO0)>UQ zHmDA0eJ$@vyjC~eh5K)Llr(y39sax7#31RkMZ+Gtf8O4lYz!H^XMDk|x0`_{Si*`6 zW^1Ly(e@?Wm72@F9(t=z`=#l{r8?QRSTRO#DC4z`D?-`gls1?cTsAk>W1qCA%ZRml zs}P}qfePpj6I{}It!D0nR{U%qyk;`HX* z&}(k=WL5k2?nRd#)#K!)J6err1{WKVA=vf8QNCu-&}DRyuS-^u$u)YS4c+^b^=@B4 zZkv1jt8}}5xmlp~M}k>mSb7PUtV`%s@K?=4sczh_nuilt&MN1};!;1E70_~39qd3W z8VV8^TL9f#y_&MF-WT>5@hkNl$zxUMAsXrUJrXcOHKa5_DmkyaL-oNxQ<7PCJHtWR zUQXYj;(}fpEu!DEVi7!Mu!gl7Cq%QBpyfNvC7aop{$V+H{$m3xR&Q=+Q^>ROEC;*LFmF zR6(f(@DW;Ixq~&Bj6*m}g+!LKEZP&w=^AL)?)lLTXRDBYtNCfo`#;3MkQW6o9EUZk zi;8-qCa;l&pB5}lQW8!C))5BW=zw<1UES~m@T|~o+N`PekD@tRjSf-X(7t+SWl?F; z&1$M{#3fzxur|sd;F5Kl1U%7voi`OE(3qKM!}Jmo(T!A2Sm~+u!rBlzHH$(Rnh??}?d>;E*Q4#&>KFIqw$^y}l-zTgG{tN4 z3NYeAZkaMVo*n|R6*7m$VaYF%Sgp!KCr_jbTs&tNEC#fAy~+bxaQKkEeY*s(P|`>r zazAWYak47DXoo$oI~luXJvMY}zaar7ln*C^K`UJ+-3<*&$4QI^SagmDzfhzwMO4fz z$R+>_LYe(LoC$G&)btFc$}f~E0y5^$@cG*%z=LpnWFxe}mqvLCy`ycujrG*Tj5wQ$ zfdWVDij3>9?~$I3_ZolOETG|U7-UQ*K+8)(Dpw-{JN>yWkZ zQjYX2w9-r}yzT1frKE@XVgO?)*2u@t#AdES1J`2u2>nU2L%Q!Qf+MyOKRJxODII5M zh{Tu-rM)k9e?o4F8XUJE6(Y%Tu@izH!1SAEuoEEPzGElK@HKgAB)OA9UnJx^$i`;+ zl(FN9;R~|X&<;kRTBzRaKxG`$43G!Jr*0c;LeDvqn;@;p`=no*m;>Lrg$J0S+-`|q zZ?8lsy?-UqJgOW!iQ>D_Vkt9BE=J1MA4^Z;z`uHo)uNYB4rQH1mF2A5)f1nXP)5$h zrth&%4;iw;7WqP6Pb3&>GTOnz(kETaJEdP}IJ{IFGt`)jP-Br;vj^+_T7{I<>#x`k9t7ZgG2pVPU;xy-0@89BZG44`}0Rw7Ecw`YS;f4NrWu z=C5{1f2WQAfHde#DW&5QxPs^dEC^r;^#@bEr%17?TIa z5x?-zMZ@T$xh{&jPGQs>Ks(5z^WTy3G_;eYT?FVRbKPY0Y|MJ=9hFdC~M7L6)Ldy-?o dj(r9#CN8P}E@q1u9WxbG$V5FvD&#)4{{yR@EL#8o literal 0 HcmV?d00001