Zoe

Zoe

beta
实验项目

返回到博客

安全技术在数据采集中的应用

Zoe

Zoe

2018-12-15

1 MINS

这个课题或者叫思路其实早在一年前就已经在构思了,在公司的内部做过相应的分享。当时很多东西可能只是口诉的,超出了PPT的成文范畴,最近在构思一个新的想法,正好把这个方面的知识、经验或者叫Tips做一些总结。 全文不会从网络安全或移动安全等安全领域来讲,因为我在这些专业领域也并不擅长,我仅从爬虫的角度,结合安全的相关知识来思考如何解决爬虫中遇到的问题。

爬虫流程.jpg

数据采集从解决问题的角度来看,一般可以划分为2个部分:

11. 寻找可以高效抓取数据的入口
22. 高效抓取的实现

本文涉及到的内容,均为旨在解决第一部分的问题。至于如何实现高效的数据抓取,我们可以利用已有的或自己实现的爬虫框架来做,它的难点一般都比较固定在解决系统层面的性能问题,关于如果设计一套数据抓取的系统,可详细阅读“高效爬虫的思考与实现”一文。

:warning: 本文不涉及漏洞的挖掘和利用。

信息安全#

信息安全在维基百科中的解释如下:

保护信息信息系统免受未经授权的进入、使用、披露、破坏、修改、检视、记录及销毁。

广义上来说“信息安全”只的是"Security",意义是主动保护信息或设备的安全。但一般而言,我所理解的狭义上的信心安全特指,漏洞挖掘。这里可能会对名词的理解有所偏差,但是我们先明确接下来讨论的事情,会围绕“漏洞挖掘”这个角度来讨论。

原则上来说,在信息安全(以下简称:信安)领域做深入研究的话,需要掌握很多的知识,除了计算机的领域知识外,其对数学知识的要求会比其他的一般计算机方向要高得多,这主要是因为整个研究中,会较多地涉及到加密算法的研究和实现。原则上来说,信安的基础要求会有:

  • 数学知识
    • 线性代数
    • 离散数学
  • 加解密算法
  • 操作系统
  • 网络

另外,信安会有不同的方向,除了上面的基础外,还会有方向上的知识有较高的要求。大体上,分为:

  • Web安全
    • HTTP协议
    • SQL
    • 数据库
    • Javascript、HTML
    • 主流后端语言
  • 端安全
    • 计算机系统
    • 汇编
      • arm
      • x86
    • 终端系统
      • Windows
      • iOS
      • Android
    • 端上主流编程语言

很多时候,在解决问题时,绝对不是“一招鲜,吃遍天”,而是需要各种不同的手段和手法并用,才能快速地解决问题,这个时候基础和平时的积累也就体现了价值。

本文旨在给爬虫领域的信安应用做些抛砖引玉的工作,所以下文会从解决爬虫问题的角度出发来探讨如何利用信安的一些小技巧和工具。再者,笔者也并非信安的从业者,仅以爱好者的身份做过一些实践,由于笔者的知识和经验有限,在描述中可能会存在纰漏和错误,欢迎斧正。

常见的信安手段#

这里我列出一些我时常所使用到的信安技巧,实际的案例会远远比空洞的言语描述使得更加清晰。我将工作和生活中曾经用到的一些方法和技巧进行了整理,挑出了一些比较有代表性的案例,进行实战分析,便于大家更好的理解思路和掌握相关的小技巧。

在引言中提到,我们的目的是在“寻找高效实现数据抓取的入口点”。将这个问题展开来看,一般而言大体的目标会分为:

  1. 获取数据
  2. 解密请求
  3. 绕过反爬

下面所列举的不同的手段可能会有不同的使用目的,但基本上都是以这3个为主。我们提到的这些方法并不是瞎蒙瞎尝试出来的,而是很清楚的知道这些方法产生背后的系统或逻辑的实现,对症下药的结果。所以,下面在介绍这些方法时,我们会先简单地说明这个方法解决的问题背后系统的大致逻辑,再来说明我们应对的思路,然后我们再用一个实际的案例来详细的说明,最后附上能够提高我们效率的辅助工具。这样一路跟着看下来,我想应该还是能够让大家有不少的收获。

1. Javascript 调试#

2. HTTP请求参数调整#

3. 防御系统绕过#

4. App逆向#

总结#

本身数据抓取算是处在一个灰色的地带,其研究的方法与白帽有较多的重合,但是也有其独有的特点,如:

  • 目的性极为明确---数据
  • 要求稳定
  • 可规模化

大体上,我们可以划分为两种模式:

  1. 拿着安全的PoC来做工程化
  2. 用着安全的手段来找突破点

第一点,是不合法的操作,我们这里讲到的基本上都是属于第二点内容。

最后我在唠叨几句,我一直强调说,

眼界决定境界。

同时眼界也决定着方法论集合的大小。在工作中保持好奇,留意每一个领域和技术手段,虽然我们没办法以有限的时间成为各个领域的专家,但是我们可以借助其他领域的知识和方法,来解决我们所在的专业领域所遇到的问题,反之亦然。

知识的深度决定解决问题的效率,知识的广度决定解决问题的方法。

附录#

工具永远是提高效率的最佳手段。

这里我整理了我平时使用到的一些工具,方便大家查阅,也欢迎大家向我提交自己所使用的高效率工具。如果数量较多或者更新比较频繁,我会考虑放在Github仓库,目前先放在文章末尾,我会保持列表的更新。

另外,推荐大家关注 awesome系列

子域名挖掘工具#

在线工具#

  1. dnsdumpster
  2. virustotal
  3. zoomeye
  4. censys
  5. netcraft
  6. crt
  7. shodan
  8. transparencyreport

爆破方式#

  • Subbrute - 快速枚举 DNS 记录和子域名。
  • dnscan - 使用 Python 写的基于字典查询 DNS 的子域名扫描器。

Changelog#

  • 2019年1月7日 增加“信息安全”章节
  • 2018年12月15日 初始化,公司

    Deployment 可控的滚动升级实现
    爬虫的一点tips

    Zoe

    Zoe

    beta

    我将成为我的墓志铭

    站点

    © 2011 - 2022 Zoe - All rights reserved.

    Made with by in Hangzhou.