• 二进制安全入门


    二进制安全是一个比较偏向于底层的方向,因此对学习者的计算机基础要求较高,如
    C/C++/Python 编程、汇编语言、计算机组成原理、操作系统、编译原理等,可以在 MOOC 上找到很
    多国内外著名高校的课程资料,中文课程推荐网易云课堂的大学计算机专业课程体系,英文课程推
    荐如下。

    • Harvard CS50 Introduction to Computer Science
    • CMU 18-447 Introduction to Computer Architecture
    • MIT 6.828 Operating System Engineering
    • Stanford CS143 Compilers

    在具备了计算机基础后,二进制安全又可以细分为逆向工程和漏洞挖掘与利用等方向。学习的
    目标是掌握各平台上静态反汇编(IDA、Radare2)和动态调试(GDB、x64dbg)工具,能够熟练阅
    读反汇编代码,理解 x86、ARM 和 MIPS 二进制程序,特别要注意程序的结构组成和编译运行的细
    节。此阶段,大量动手实践是达到熟练的必经之路。推荐资料如下。

    • Secure Coding in C and C++, 2nd Edition  The Intel 64 and IA-32 Architectures Software Developer’s Manual
    • ARM Cortex-A Series Programmer’s Guide
    • See MIPS Run, 2nd Edition  Reverse Engineering for Beginners
    • 《程序员的自我修养——链接、装载与库》
    • 《加密与解密,第 4 版》

    接下来,就可以进入软件漏洞的学习了,从 CTF 切入是一个很好的思路,此阶段还
    可以通过读 write-ups 来学习。在掌握了这些基本知识之后,就可以尝试分析真实环境中的漏洞,或
    者分析一些恶意样本,推荐资料如下。

    • RPI CSCI-4968 Modern Binary Exploitation
    • Hacking: The Art of Exploitation, 2nd Edition
    • The Shellcoder’s Handbook, 2nd Edition
    • Practical Malware Analysis
    • 《漏洞战争:软件漏洞分析精要》

    有了实践的基础之后,可以学习一些程序分析理论,比如数据流分析(工具如 Soot)、值集分
    析(BAP)、可满足性理论(Z3)、动态二进制插桩(DynamoRio、Pin)、符号执行(KLEE、angr)、
    模糊测试(Peach、AFL)等。这些技术对于将程序分析和漏洞挖掘自动化非常重要,是学术界和工
    业界都在研究的热点。感兴趣的还可以关注一下专注于自动化网络攻防的 CGC 竞赛。推荐资料如下。

    • UT Dallas CS-6V81 System Security and Binary Code Analysis
    • AU Static Program Analysis Lecture notes

    如果是走学术路线的朋友,阅读论文必不可少,一开始可以读综述类的文章,对某个领域的研
    究情况有全面的了解,然后跟随综述去找对应的论文。个人比较推荐会议论文,因为通常可以在作
    者个人主页上找到幻灯片,甚至会议录像视频,对学习理解论文很有帮助。如果直接读论文则感觉
    会有些困难,这里推荐上海交通大学“蜚语”安全小组的论文笔记。坚持读、多思考,相信量变终
    会产生质变。
    为了持续学习和提升,还需要收集和订阅一些安全资讯(FreeBuf、SecWiki、安全客)、漏洞披
    露(exploit-db、CVE)、技术论坛(看雪论坛、吾爱破解、先知社区)和大牛的技术博客,这一步
    可以通过 RSS Feed 来完成。随着社会媒体的发展,很多安全团队和个人都转战到了 Twitter、微博、
    微信公众号等新媒体上,请果断关注他们(操作技巧:从某个安全研究者开始,遍历其关注列表,
    然后递归,即可获得大量相关资源),通常可以获得最新的研究成果、漏洞、PoC、会议演讲等信息
    甚至资源链接等。
    最后,我想结合自己以及同学毕业季找工作的经历,简单谈一谈二进制方向的就业问题。首先,
    从各种企业的招聘需求来看,安全岗位相比研发、运维和甚至算法都是少之又少的,且集中在互联
    网行业,少部分是国企和银行。在安全岗位中,又以 Web 安全、安全开发和安全管理类居多,而二
    进制安全由于企业需求并不是很明朗,因此岗位仅仅存在于几个头部的甲方互联网公司(如腾讯、
    阿里等)的安全实验室,以及部分乙方安全公司(如 360、深信服等)中,主要从事安全研究、病毒
    分析和漏洞分析等工作,相对而言就业面狭窄,门槛也较高。随着各种漏洞缓解机制的引入和成熟,
    软件漏洞即使不会减少,也会越来越难以利用,试想有一天漏洞利用的成本大于利润,那么漏洞研
    究也就走到头了。所以,如果不是对该方向有强烈的兴趣和死磕一辈子的决心,考虑到投入产出比,
    还是建议选择 Web 安全、安全管理等就业前景更好的方向。好消息是,随着物联网的发展,大量智
    能设备的出现为二进制安全提供了新的方向,让我们拭目以待。

    摘抄自《CTF权威指南pwn篇》

  • 相关阅读:
    Binder机制,从Java到C (大纲)
    大陆台湾计算机术语比对
    关于nginx架构探究(2)
    关于nginx架构探究(1)
    关于开源中文搜索引擎架构coreseek中算法详解
    关于linux定时操作cron的理解
    sqlachemy 使用实例
    nginx+uwsgi+flask搭建python-web应用程序
    VC维
    关于zMPLS的设计解析
  • 原文地址:https://www.cnblogs.com/CSE-kun/p/14839964.html
Copyright © 2020-2023  润新知