前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HITB 2020:二进制漏洞挖掘仍是会议主流方向

HITB 2020:二进制漏洞挖掘仍是会议主流方向

作者头像
泉哥
发布于 2020-06-09 03:22:22
发布于 2020-06-09 03:22:22
1.4K0
举报
文章被收录于专栏:漏洞战争漏洞战争

本周Hack In The Box官方已经将大会演讲视频上传到YouTube,之前在官网有提供部分议题的pdf下载,但有些未提供的议题,这次也公开了视频,可以看到议题ppt内容。

今年的议题更多集中在二进制漏洞挖掘上,占比43%,而这些议题涉及(Windows、macOS、IoT、工控等等),其它议题方向包括恶意软件、二进制分析工具、容器安全、漏洞奖励计划等等,可以看出当前工业界的一些研究议题,还是比较喜欢二进制漏洞挖掘这个方向,这次一个Web相关议题都没有。

精彩议题推荐

1、60 CVEs in 60 Days

主要分享Windows平台下高权限进程的Symlink攻击(高权限进程在操作文件时,未作严格的权限校验,导致攻击利用符号链接到一些受保护的目录文件,比如C盘的系统DLL文件,后面系统或应用去自动加载时,实现代码执行并提权),这种攻击方式最早是由Project Zero大牛James Forshaw公布的,当时还开源了个利用测试工具(https://github.com/googleprojectzero/symboliclink-testing-tools) ,指定目录参数来测试,但它还算不上完整的漏洞挖掘工具。

漏洞原理较为简单,关键在于如何批量自动化挖掘,为此作者实现了一款叫 Ichanea 的自动化漏洞挖掘工具。

原理:通过过滤驱动捕获文件操作相关的IRP包,然后获取归属进程的相关信息,包括路径、进线程token等等,然后判断是否为高权限进程,若是就拿Token去检测文件的访问权限,如果可以就发消息给高权限的服务进程,创建/RCP/Control的加载点及符号链接进行DLL劫持测试,从而将监控、发现和利用集成一体。

最后在26家厂商(包括微软、Intel、Adobe、华为等等)产品中,挖到上百个漏洞,其中已有60个CVE致谢,产量颇丰。

2、Pwning Adobe Reader Multiple Times with Malformed Strings

腾讯玄武实验室出品,分享Adobe Reader在处理字符串时的安全问题。通过PDF JS来构造恶意字符串去触发,JS上的漏洞也更便于写exploit。虽然Adobe用了一些自定义的字符串安全处理函数,但其使用不当导致仍会造成漏洞。主要有两方面原因:

1、传错参数,比如拷贝字符时max_bytes参数误传0x7FFFFFFF,可能造成溢出;

2、字符串类型检测不当,比如误将ASNI当作Unicode字符串处理,千万类型混淆漏洞。

感觉这个攻击面还是有点偏门,找到一块新大陆,刷起漏洞来应该很爽,但估计也就一波过,可能没剩下啥了。

3、Exploiting directory permissions on macOS

有点类似前面Windows Symlink攻击提权的思路,介绍了macOS下系统对文件及目录的权限管控方式,用fs_usage去监控进程的文件操作行为,从而找出一些可能被用于提权的目录/文件。利用的正是文件与目录高低权限的差异化,借助软硬链实现对受保护文件的越权操作。有些只能写,但内容不可控,或者只能删除,也有可被用于root提权的漏洞。最后作者也简单地介绍一些文件操作方面的安全建议,比如对于安装器,若是/tmp就生成随机名目录,其它的要控制好权限,比如就root权限,其它则收回,安装前清理目录,删除移动文件时避免支持链接方式等等。

4、Documents of Doom – Infecting Macos Via Office Macros

以前Office宏病毒在Windows还是流行过一段时间的,其实macOS上也有,作者就列举了2017、2018、2019年的三次真实的宏攻击案例,也介绍了olevba之类的分析工具。

除此之外,还介绍了一些mac版Office沙盒逃逸的漏洞,用户打开doc后,可以无提示无交互的实现代码执行。作者自己也挖过一个沙盒逃逸漏洞,正是利用Python这条漏网之鱼,于用它将app添加版系统的自启动项,实现非沙盒下的执行权限。

5、Fuzzing File System Implementations to Uncover Security Bugs

PPT上写的关键信息不多,但重要的是作者把工具开源了,针对BSD文件系统(支持FFS、UFS、EXT、ZFS文件系统格式)进行Fuzzing,工具地址:https://github.com/0xricksanchez/fisy-fuzz 。所以重点可以看下该工具,支持Ubuntu,要求KVM、QEMU和libvirt,采用的是暴力Fuzzing 文件系统,直接用到了radamsa,自己也作了全局的随机变异,然后尝试加载,若加载成功就调用syscall执行一些文件操作,看是否崩溃,最后再借助虚拟机快照还原运行环境。

完整议题列表

  1. 60 CVEs in 60 Days
  2. The State of ICS Security: then and Now
  3. Pwning Adobe Reader Multiple Times with Malformed Strings
  4. Open the Gates – the (In)Security of Cloudless Smart Door Systems
  5. Hiding in Plain Sight: Analyzing Recent Evolutions in Malware Loaders
  6. Building Next-gen Security Analysis Tools with Qiling Framework
  7. Exploiting Directory Permissions on macOS
  8. Documents of Doom – Infecting Macos Via Office Macros
  9. From Man-in-the-Middle to Privesc and Rce: Exploiting the Netlogon Protocol
  10. The Dna of Hidden Cobra – a Look at a Nation State’s Cyber Offensive Programs
  11. Prisoner Number 6
  12. Fuzzing File System Implementations to Uncover Security Bugs
  13. Breaking and Securing Cloud Platforms
  14. Army of Undead: Tailored Firmware Emulation
  15. Bugrank: a Community Bug Bounty Platform
  16. Virtual Lab: Bare-metal Reverse Engineering & Hardware Hacking

议题ppt及视频地址参见:https://conference.hitb.org/lockdown-livestream/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漏洞战争 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Linux 网络编程:从 Socket API 到极简 Redis 发布/订阅 sub/pub 服务的实现
本文旨在系统性地阐述 Linux 环境下的网络编程基础,重点关注 Socket 应用程序接口(API)的原理与应用。通过循序渐进的方式,结合具体的 C 语言代码示例,我们将剖析核心系统调用的机制,并最终构建一个基于传输控制协议(TCP)的简化版发布/订阅(Publish/Subscribe, Pub/Sub)服务器模型。
Piper破壳
2025/05/07
460
【TCP服务器的演变过程】编写第一个TCP服务器:实现一对一的连接通信
在构建网络应用时,常常会接触到各种网络协议,其中TCP(Transmission Control Protocol)作为一种面向连接、可靠的传输层协议,扮演着至关重要的角色。理解TCP协议及其在服务器开发中的应用,是每一位网络编程初学者的必经之路。
Lion 莱恩呀
2025/05/13
810
【TCP服务器的演变过程】编写第一个TCP服务器:实现一对一的连接通信
socket网络编程(六)——心跳包问题
问大家一个问题,如果客户端和服务端长时间没有相互发送数据的话,那么我们怎么来判断这个连接是否存在的呢?有些人可能很自然地说直接send一下不就可以了,确实可以这样进行判断,那么我们发送的时候可以选择发送任何东西,所以一般都是发送一个空包,这个就是心跳包。
一点sir
2024/01/10
4670
一个简单的Linux下Client/Server应答例子
题目:Hello world 要求:案例程序基于TCP协议,由客户程序启动后向服务器程序发送“hello world”,服务器程序显示客户机IP地址、端口、以及发送的信息。服务器将收到的字符串发送给客户端,客户端显示验证。 使用方法:在linux下编译 $gcc -o client client.c $gcc -o server server.c 先运行server程序$./server 再运行client程序$./client xxx(你要访问服务器名---非IP)
阳光岛主
2019/02/19
1.3K0
socket网络编程(五)——粘包拆包问题
假设一个这样的场景,客户端要利用send()函数发送字符“asd”到服务端,连续发送3次,但是服务端休眠10秒之后再去缓冲池中接收。那么请问10秒之后服务端从缓冲区接收到的信息是“asd”还是“asdasdasd”呢?如果大家有去做实验的话,可以知道服务端收到的是“asdasdasd”,为什么会这样呢?按正常的话,服务端收到的应该是“asd”,剩下的两个asd要不就是收不到要不就是下次循环收到,怎么会一次性收到“asdasdasd”呢?如果要说罪魁祸首的话就是那个休眠10秒,导致数据粘包了!
一点sir
2024/01/10
3430
socket网络编程(五)——粘包拆包问题
Tcp协议Socket编程
  本次socket编程需要使用到 日志文件,此为具体日志编写过程。以及 线程池,线程池原理比较简单,看注释即可。
用户11029129
2024/11/22
720
Tcp协议Socket编程
浅谈I/O模型
作为程序员,在日常工作中,都或多或少的接触过网络I/O这个概念,接触过网络编程,听说过socket等等,但是对于更深层次的理解,多少还是有点欠缺,通过本文,可以了解网络中最重要的模块I/O,以及对几种网络模型的介绍,在我们日常工作开发过程中,可以针对特定需求,选择特定的网络模型,达到事半功倍的效果。
高性能架构探索
2021/04/13
6270
Linux网络编程一步一步学-异步通讯聊天程序select
/************关于本文档********************************************
阳光岛主
2019/02/19
8230
【Linux网络编程】Socket编程--TCP:echo server | 多线程远程命令执行
在学习本章之前,先看【Linux网络编程】Socket编程–UDP:实现服务器接收客服端的消息 | DictServer简单的英译汉的网络字典 | 简单聊天室】,里面详细介绍函数的使用方法,小编在这篇文章不再具体介绍。
南桥
2024/11/14
1620
【Linux网络编程】Socket编程--TCP:echo server | 多线程远程命令执行
C语言实现Socket简单通信
https://www.cnblogs.com/Dukefish/p/9197830.html
C语言中文社区
2022/05/30
6750
select的限制以及poll的使用
1.先说select在多路IO中的限制: 1)linux中每个程序能够打开的最多文件描述符是有限制的。默认是1024. 可以通过ulimit -n进行查看和修改:
xcywt
2022/05/09
1K0
select的限制以及poll的使用
【Linux网络编程】Socket编程--UDP:实现服务器接收客服端的消息
<font color= black face="楷体" size=3><center>🌈个人主页:南桥几晴秋
南桥
2024/10/24
1850
【Linux网络编程】Socket编程--UDP:实现服务器接收客服端的消息
百问FB网络编程 - 主要函数介绍
domain是网络程序所在的主机采用的通讯协族(AF_UNIX和AF_INET等)。
阿志小管家
2024/12/05
840
TCP网络编程中connect()、listen()和accept()三者之间的关系 ( 非常重要!!)
基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下:
战神伽罗
2019/09/04
2.9K0
TCP网络编程中connect()、listen()和accept()三者之间的关系 ( 非常重要!!)
Socket编程回顾,一个最简单服务器程序
第一次接触服务器是快毕业的时候,是不是有点晚(# ̄ω ̄),这也导致工作方向一直没考虑网络编程这块,做了好多其他没啥“意思”的技术。 之前看到一篇博文提到程序猿80%都是庸才,10%是人才,10%是天才,深有感触。仔细想想自己是不是也是还在那80%里面挣扎?一个抱怨这抱怨那的trouble maker,写着烂的掉渣的代码,永远在别人身后不思进取,给剩下的20%的同事埋雷。 扯远了,重新回顾Socket,温习下Linux内核是怎么处理Socket的吧。 文件描述符,在网络编程中经常提及这个词,当时初
Aichen
2018/05/18
4760
提升性能的必备技术:Linux网络IO与select详解
IO 即“Input”和“Output”的组合,即输入/输出,IO用来处理设备之间的数据传输。socket/fd也是一种IO。
Lion 莱恩呀
2024/08/10
1760
提升性能的必备技术:Linux网络IO与select详解
c语言socket通信
1. 前 言 网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
全栈程序员站长
2022/09/14
1.3K0
linux网络编程系列(三)--tcp和udp的基本函数调用过程及如何选择
TCP是TCP/IP体系中面向连接的传输层协议,它提供全双工和可靠交付的服务。它采用许多机制来确保端到端结点之间的可靠数据传输,如采用序列号、确认重传、滑动窗口等。
cpp加油站
2021/04/16
1K0
linux网络编程系列(三)--tcp和udp的基本函数调用过程及如何选择
Linux下select的用法--实现一个简单的回射服务器程序
2. 函数说明:可以同时监控多个文件描述符是否发生了读写或者异常。(有点像windows下的waitformultipleobjects,可以同时等待多个事件) 参数说明: 1)nfds:要监控的文件描述符的最大值加1,这个值不能错。 2)readfds:指向fd_set的指针。这是一个集合,专门用于监视读取数据的。所有需要监控读取数据的描述符都需要放进这个集合中。比如你需要监控4描述符的读取数据,就把4放进这个集合之中。 3)writefds:同上,这里是专门监视写的集合 4)exceptfds:同上,这里是专门监视异常的集合 5)timeout:超时。指向的timeval 结构体。 如果参数设为NULL,则select是阻塞的。 如果不为空,则表示超时时间(当结构体里面的成员都设为0时,表示不阻塞,立即返回)。
xcywt
2022/05/09
6760
加密通讯协议SSL编程周立发
编译程序用下列命令: gcc -Wall ssl-client.c -o client gcc -Wall ssl-server.c -o server 运行程序用如下命令: ./server 7838 1 127.0.0.1 cacert.pem privkey.pem ./client 127.0.0.1 7838 用下面这两个命令产生上述cacert.pem和privkey.pem文件: openssl genrsa -out privkey.pem 2048 openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 具体请参考 “OpenSSL体系下使用密钥数字证书等” 如果想对SSL有更深入的了解,请学习计算机安全相关的内容,尤其是非对称加密技术。 如果想对SSL库的源代码有深入学习,请去 www.openssl.org 下载源码来阅读。
一见
2018/08/07
1.4K0
推荐阅读
相关推荐
Linux 网络编程:从 Socket API 到极简 Redis 发布/订阅 sub/pub 服务的实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档