乐于分享
好东西不私藏

企业源码泄露排查思路与处置流程

企业源码泄露排查思路与处置流程

一、基础信息搜集

当面对突如其来的源代码泄露事件时,很多人摸不着头脑,这也想搜那也想搜,但已知的信息只是朋友说的一嘴或者一个局部截图,又无从下手,这就让人苦恼,心里想着这玩意应该不难,但是又不知道从哪开始,半天不知道干嘛,影响排查效率,我也是这种情况,所以今天总结出这篇文章。

面对这种的未知情况,可以分三步走。第一步是尽可能在和当事人的对话中搜集足够的信息,方便后续排查,也更有方向性,第二步才是平常关注的怎么查,这个时候就根据已知信息进行排查,第三步就是收尾工作做些应急处置,尽可能减少泄露信息,加强防护,人员行为规范管控等。现在站在乙方身份去做源代码泄露事件应急,我们要搜集如下信息:

  1. 优先了解客户信息
客户信息
优先级
公司完整名称
公司日常简称
公司英文缩写
公司iocn图标
公司英文名称
发现时间
品牌或商标名
曾用名或旧名称

以XX公司举例,我们在和客户对话过程时,要知道公司全称:XX集团有限公司,要问日常对内对外简,公司简称:XX,这个简称有可能就是泄露的代码仓库名称,公司英文缩写:abcd、ad,当前品牌或商标名,iocn图标:公司logo等都是为了之后搜索做铺垫,我们可以去资产汇测平台以不同的语法搜索,在不知道在哪泄露的情况下我们可以扩大搜索范围。

  1. 优先了解泄露途径
泄露途径 优先级
是否知道线索来源,谁发现的?在哪看到的?
是否有员工使用公共代码仓库存储公司代码
是否有外包、第三方开发过该系统
是否在暗网、论坛、黑产群等平台看到交易或售卖

泄露路径是一个很重要内容,可以直接奠定排查泄露事件的方向,减少很多不必要的手段和排查事件,能快速定位事件的源头。有时候客户说是朋友看到告知他的,那么再问问这个朋友说是在哪看到的?如果是公共代码仓库,直接搜索公司名可能就能找到代码来源和对应的账号,就能找到人。找到泄漏出处后,务必需要留意账号名称或者联系方式。

  1. 泄露特征
泄露特征 优先级
代码专属命名,如:有无固定项目名,如project-A-v2.0?
特有注释,如:代码里是否有固定注释、备注、人名?
了解特有变量或前缀,如:数据库前缀、接口前缀、包名、类名

泄露特征主要是辅助排查泄露源,以及验证泄漏代码本身的真实性。

  1. 危害等级
危害等级 优先级
是否包含数据库账号密码等
是否包含第三方密钥、云密钥、内部密钥等
是否包含内网地址、VPN、后台地址等
是否包含核心业务逻辑、核心算法、流程、配置、秘钥等

判断危害等级主要是自评估下代码泄露造成的影响范围,后续的密码需不需要更改、后台地址需不需要变更、需不需要做代码审计、需不需要通报人员、需不需要更改防护策略、需不需要报警或上报监管。一般在和客户对话时,稍微问一下,调整事件后续的应急处置方式,若是找到泄露代码,更方便了后续的处置。

二、排查方式

(一)关键字搜索

根据前期信息搜集的内容,选取一些关键内容进行单个检索或者组合检索,方式如下:

常用的是搜索公司名称

  • 公司全称
  • 公司日常简称
  • 公司英文缩写

其他关键字

  • 代码项目名称
  • 代码变量命名
  • 开发语言
  • 标签
  • 来源

下面推荐一些地址,搜索时优先试常见或常用的平台,以便提高效率

(二)网络安全资产测绘平台

鹰图(Hunter):https://hunter.qianxin.com

360Quare:https://quake.360.net

Fofa:https://fofa.info

零零信安:https://0.zone/

(三)公共或自建代码仓库

Github:https://github.com/

Gitee:https://gitee.com/

Gitcode:https://gitcode.net/

GitLab:https://packages.gitlab.com/gitlab/gitlab-ce

Gitea:https://dl.gitea.com/gitea/

Gogs:https://dl.gogs.io/

(四)文档或协作平台泄露

语雀:https://www.yuque.com/search

飞书:https://www.feishu.cn/

石墨文档:https://shimo.im/

(五)网盘或文件分享平台泄露

国内网盘

百度网盘:https://pan.baidu.com/

阿里云盘:https://www.aliyundrive.com/

凌风云盘:https://www.lingfengyun.com/

超能搜:https://www.chaonengsou.com/

其他资源网盘搜索导航站:https://www.bilibili.com/read/cv18092458/?opus_fallback=1

国外网盘

GoogleDrive:https://drive.google.com/

Mega.nz:https://mega.nz/

(六)专业源码站点排查

站长之家下载:https://down.chinaz.com/

刀客源码:https://www.dkewl.com/

(七)国外的交易平台或论坛

exploit.in:https://exploit.in/

darkforums.su:https://darkforums.su/

HackForums:https://hackforums.net

Telegram黑产群组:https://telegram.org

(八)谷歌语法

谷歌:https://www.google.com/

site:指定域名,如“apachesite:bbs.xuegod.cn”,可查询网站的收录情况。

inurl:限定在url中搜索,如“inurl:qq.txt”,可搜索url中包含特定内容的页面“inurl:admin_login.asp”,可查找后台登录页面。

intext:搜索网页内容里面的关键字,如“intext:user.sqlintitle:index.of”,可查询包含user.sql用户数据库信息且网站目录开放的页面。

Filetype:指定文件类型,如“Kalifiletype:torrent”,可搜索指定关键字和文件类型的内容。

intitle:搜索网页标题中的关键字,如“intitle:index.of.bash_history”,可查找标题包含“index.of”且能显示网站目录下特定文件(如.bash_history)信息的页面;“intitle:index.ofconfig_global.php”,可查找标题包含“index.of”且与config_global.php文件相关的页面。

link:返回所有指定域名链接(文中未详细举例)。

info:查找指定站点信息(文中未详细举例)。

参考:https://blog.csdn.net/fanjinhong_8521/article/details/147879953

(九)备份文件扫描

dirsearch目录扫描工具:https://github.com/maurosoria/dirsearch

命令:dirsearch-uhttps://example.com-wsource_leak.txt-ocustom_scan.txt

三、应急处理

处理方式一般从按照泄露程度和泄露渠道这两个方面结合处理

泄露程度分三种,轻度、中度、重度,按照如下处理:

  1. 轻度泄露

轻度泄露情况指的是:仅框架、空项目、无敏感信息等轻微泄露,不影响系统安全与业务运行的情况。

这种情况的处理需要先确认泄露位置,要求删除或下架,同时内部告知开发或运维,禁止再上传,在这个过程中截图留存证据。

  1. 中度泄露

中度泄露情况指的是:含配置、接口、文档、部分业务代码、少量内网信息等涉及一些内部敏感信息的泄露情况。

这种情况的处理需先确认泄露位置,立即下架或删除泄露文件,审计代码泄露数据,及时更换密钥、数据库密码、Token等,之后扫描公网是否有多处泄露评估泄露范围,在这个过程中截图留存证据。

  1. 重度泄露

重度泄露情况指的是:核心业务逻辑、业务源码、大部分或者全量代码、数据库密码、API密钥、配置信息、接口等敏感信息泄露可直接导致系统被入侵、数据泄露、业务瘫痪的情况。

这种情况的处理是需要先确认泄露位置,及时下线暴露服务或修改所有密码密钥,对系统进行全面安全加固,泄露的源码进行代码审计,同时加强该业务系统日常安全告警监控,在这个过程中截图留存证据,必要时报警。

不同泄露渠道处理方式,如下处理:

  1. 公共或自建代码仓库泄露

删除公开仓库或改为私有,搜索是否被镜像、fork、二次上传,投诉下架。

  1. 文档或协作平台泄露

将文档设为私密或删除,检查历史版本、分享记录,收回所有外部分享链接。

  1. 网盘或文件分享平台泄露

及时取消分享、删除文件,若是专业源码站点泄露,联系平台投诉侵权下架。

  1. 网站目录泄露

服务器端删除.git、备份文件,关闭目录浏览,Nginx/Apache禁止访问敏感文件、目录。

  1. 暗网/HackForums/Telegram黑产售卖

固定证据(截图、链接、发布人),评估是否真实泄露,及时更换密钥、账号密码、配置信息等,必要时报警或上报监管。

注意:所有的过程都需要留存截图记录,保持留痕

事件后续公司层面的处理:

  1. 进行内部复盘与责任认定,梳理泄露原因、泄露路径、责任人,该通报就通报。
  2. 完善制度与规范,明确禁止将公司代码、配置、文档上传至公共平台,针对第三方公司开发的代码保存要求也要覆盖到,转入内部搭建的代码仓库。
  3. 加强安全培训,对开发、运维、测试人员开展安全意识培训。
  4. 技术加固与常态化巡检,定期对公网资产进行敏感文件扫描,持续关注控GitHub、Gitee、网盘等平台泄露信息,向厂家购买公司情报监控服务。

四、案例分享

某日,有个客户找到我说他公司可能有源代码泄露事件,需要我辅助排查。

客户知道这个事情是因为:有个朋友告诉他,他公司的源代码貌似泄露了,然后在晚上的时候发送了一张标记了他公司的简称局部截图,然后就没说什么了,那朋友晚上就睡觉了,第二天早上可能在忙,没回信息。

面对这个信息不全的情况,我按照自己的源代码排查流程走:

第一步:尽可能在和当事人的对话中搜集足够的信息

第二步:根据已知信息进行排查

第三步:应急处置

  1. 信息搜集

我对客户问了些其他问题,公司简称、公司英文简称、有没有旧的公司名称、公司一些iocn图标,然后我这边先根据这些线索找找看,同时他那边再继续联系他朋友,问问源头在哪,泄露代码的内容有多少。随后我梳理了下已知信息有:

  • 公司全称
  • 公司简称
  • 公司英文简称
  • iocn图标
  • 某个代码仓库泄露(原因:页面关键字、页面布局风格综合分析)
  • 发现时间:X月X日
  • 当前省份
  1. 根据已知信息进行排查

之后我的寻找方向就是指向公共代码仓库或私有代码仓库,需要排查的手段也就是选择了资产汇测平台、公共代码仓库、谷歌语法。

我就拿着公司全称、简称、英文简称去 github/gitee/gitcode 等平台搜索,未发现泄露的代码仓库,简单分析后判断可能不在公共代码仓库中。

github 语句:"XX" in:name,description,readme is:public

随后怀疑可能是自建代码仓库,将尝试在资产汇测平台和使用谷歌语法,带着公司全称、简称、英文简称、代码仓库、当前省份等信息去搜索。

一般自建私人代码仓库有:GitLab、Gitea、Gogs

通过搜索多个资产汇测平台,搜索关键字为:私人代码仓库和页面关键字,没发现仓库信息,随后跟客户再沟通了下,他说明了公司内部有代码仓库,不对外,并且内部服务开放到外网需要提交流程审批,实施时通过负载均衡做端口映射才可开放外网,所以基本判断不是公司代码仓库开放外网导致的泄露,有可能外包公司自建搭建的代码仓库,上传了代码,之后我就得到了另一个信息:外包公司名称”XX 科技公司”,通过 hunter 语法筛选到该公司的代码仓库

hunter 语法:(web.title:”GitLab” OR web.title:”Gogs” OR web.title:”Gitea”) AND ip.province:”XX省” AND icp.name=”XX科技”

最终访问外包公司的仓库,也确实发现了问题。这个仓库无需登录,直接可搜索客户公司简称,就有了对应的代码仓库,也可直接下载

  1. 应急处置

找到源头就好办了,客户联系外包公司下架该代码仓库,由于泄露了一定的代码量和数据,算是中度泄露情况,需要审计代码泄露数据,客户那边及时更换了密钥、数据库密码、Token,之后客户对外包公司进行交涉,而后在制度中新增第三方公司开发的代码保存要求,对公司开发、运维、测试人员开展安全意识培训。

五、参考文章

【源代码外泄防范对策(上)】

https://mp.weixin.qq.com/s/i6L_8sFyL13R0dbrgiIpLg

【源代码外泄防范对策(下)】

https://mp.weixin.qq.com/s/WTgR_mACa4EPQrGidaIdxg

六、结语

  1. 一般来说,就是在自己公司不知情的情况下泄露的,然后朋友突然告知或者哪里通报的,所以只能有些初步信息去搜集,比如就是拿着公司名称盲着去找,只能挨个方法试一遍了
  2. 就提供一些资源和方向吧,这些方式使用也不复杂,搜就行,就不出具体教程了,主要是分享一些处理方式和完整的处理流程
  3. 实际上代码泄露排查的准确性,会受个人所处环境、账号权限、数据开放度等多个因素的影响,排查结果存在不确定性。注意:安全厂商具备更全面的内部数据、持续监测能力与商业情报资源,个人是比不了的。

  4. 最后写个免责声明:本文所分享的源代码泄露排查思路与方法,仅为个人日常实战经验总结,仅供大家学习参考、梳理排查方向,不代表 100% 能定位到所有泄露点。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 企业源码泄露排查思路与处置流程

评论 抢沙发

2 + 5 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮