打破容器的界限——使用nsenter实现Docker“内网穿透”

Docker 是个好东西,我们都知道。它的优点就是“隔离”,所有的依赖、监听的网络端口、运行产生的垃圾文件都被隔离在Docker容器里,应用数据、日志、服务端口被 Docker 以统一的形式暴露出来,简单且易维护。

但它的缺点,也是“隔离”。在生产环境中,我们当然认为最干净的环境是最好的,但一旦某些bug暴露出来,需要我们去对容器中的服务进行操作时,比如写个Python、修改数据库内容、调试服务连通性,就到了令人头痛的时候了。在容器里, dignetstat 这种豪华的工具自然不能指望,有的容器里连 wgetcurl 这种最基本的命令行工具都没有。怎么办呢?

一般来讲,我们有两种选择。一是把服务端口暴露出来,在容器外面连接暴露端口进行操作。二是在容器内安装我们需要的调试工具、运行环境,或将必要的工具 bind mount 进去,在容器内部进行操作。但这两种方式,各有优点,也各有缺点。所以今天,我们试一试第三种选择——使用 nsenter 工具,让宿主机上的程序“借用” Docker 容器的运行上下文 [1] (主要是网络与进程namespace),打破容器内外的界限,方便开发者利用宿主机上的工具快速解决问题。

同时,文中还会分享我写的一个小脚本,通过我们宿主机 glibc 提供的一个特殊机制,优雅的解决容器内网域名解析的问题。我敢打包票,针对这个问题,我这个绝对是东半球第二好用的解决方案。

阅读更多

使用 Appium 进行安卓应用自动化“爬虫”

最近在做微信公众号采集的时候,延申出来一个需求,我要对公众号进行批量采集的话,势必需要先获取我自己关注的公众号列表,后面的自动化已经非常完整,所以只需要获取所有公众号的中文名称,整个流程就打通了。但问题来了,中文名称也不好搞哇。要不我手动一个一个输?列表拉下来一看,嗬,346个。我掐指一算,10秒一个,我得机械的在那儿打打打打字一个小时。不行不行,太要命了。

那就找找自动化的方法?微信现在PC端、移动端的接口都是铁板一块,像我这种工具小子,开个Fiddler毛都抓不到,毕竟人家也没用HTTP去通信。从通信角度肯定没办法了。一般这个时候我会想到Frida/Xposed,但现在的目标是微信,之前因为插件已经封过一个号了,需要获取数据的又是大号,不敢造次。因此只能去调研一下其他非侵入式的方法了。找来找去,在UI上做文章最为保险,本文就简单讲一下,如何利用应用自动化测试框架 Appium [1],在非root环境的情况下获取任意安卓App界面上任意数据。

阅读更多

快速搭建Mock API进行应用安全测试——以某音频处理软件为例

在测(po)试(jie)软件时,我最不愿意遇到的情况,就是目标软件有联网验证的功能。说要改代码吧,又不知道代码里在哪儿有暗桩,改掉所有的输入输出点也麻烦的很。说要断它的网吧,又不是所有软件都提供离线激活的功能。今天我介绍一种四两拨千斤的联网验证绕过方式,不用断网,字节码改动少,外加Python不到100行。不流失,不蒸发,零浪费[1]

阅读更多

绕过 Cloudflare 保护进行全站爬取——使用 Cyotek WebCopy + Fiddler

前言

Cloudflare作为一个CDN服务商,它最有存在感的时候(也是最令人反感的时候)就是浏览网站时蹦出它的DDoS保护页面了。一般情况下倒还好,顶多像下图中的页面一样,留人片刻。在某些特殊网络环境中,或进行一些特殊操作(比如本文中,我们准备搞的爬虫)时,Cloudflare会强制用户输入图形验证码,而且最近还从谷歌的reCaptcha切换到了自家的hCaptcha[1],原因是嫌reCaptcha要钱。更新之后,一些开源的Cloudflare反反爬虫方案[2][3][4]也全都凉了,其中NodeJS库[3:1]的作者直接表示弃更,把项目的Github仓库设置为归档模式了。

阅读更多

CodeQL漏洞挖掘实战

CodeQL是一个白盒源码审计工具,它以一种非常新颖的方式组织代码与元数据,使研究人员能够“像查询数据库一样检索代码”,并发现其中的安全问题。Github于去年收购了开发CodeQL的公司Semmel,并与其联合成立了Github Security Lab,Semmel在此前推出了面向开源社区和企业的源代码分析平台LGTM,这个平台能够自动化的发现并预警Github上开源软件的安全问题,同时,与CodeQL一样对开源社区与开发者保持免费。

本文将从CodeQL的基础知识出发,跟随Github Security Lab发布的互动式体验课程[1],带领读者认识CodeQL在代码审计中的实际应用——在特定版本的uboot源码中发现多个安全问题,通过一段CodeQL查询语句定位到9个CVE漏洞。

阅读更多

敏感文件读写预警——基于Windows Defender勒索软件防护功能

Windows系统自带杀软,Windows Defender中,包含了很多不为人知的功能。我们今天用到的勒索软件防护[1](也叫受控文件夹访问,Controlled Folder Access),就是一个非常有意义的小功能。这个功能在Windows 10、Windows Server 2019全系列可用,但只有在系统里没有安装其他杀毒软件时,才能够看到这个选项。

总体来说,这个功能做的事情就是对用户指定和系统预置的几个目录[2]进行监控,只允许白名单里的程序修改其内容,其他程序读文件不受限制,写文件时就会报错,同时Windows Defender会对非白名单程序的修改行为进行告警,在通知中心弹一个窗。可以当一个低配版的火绒剑用 😉

本文不教大家怎么开启这个功能,这个官方文档[3]都写过了,再写没意思。本文的目的主要有两个。

  1. 更详细的告警信息——弹窗的时候就说明白,哪个进程访问了哪个目录。默认的弹窗只说“Windows阻止了一次访问”,不告诉我们哪个进程,不告诉我们对哪个目录的操作。如果要看到详情,就要点到Defender的界面,点点点好几回,再确认好几次UAC弹框,体验极差。而且,Windows Server中不提醒!不提醒!不提醒!
  2. 更详细的告警历史——一个列表就能看到,哪个进程之前访问过哪个目录。Defender的界面里,点开每一条详情就需要点一个UAC弹框,很安全,但是体验还是极差!而且,查看历史记录这个功能只有Windows 10里有,Windows Server的Defender界面中连阻止历史记录这个菜单都没有!
  3. 到这里我们可以得出一个结论,我就是那个把Windows Server 2019装在日常电脑上的蠢B……

本文实现这两个目标的方式,是通过在Windows系统事件中,截获关于Windows Defender“受控文件夹访问”部分的告警事件,再通过PowerShell脚本将事件详情推送到桌面上,这样恶意进程的操作我们就能够实时看到了。

阅读更多

Hexo 热门主题列表

Hexo的官方网站维护了一个用户提交的主题列表[1],但遗憾的是,Hexo的官网也是一个静态网站,所以并没有排序功能,默认,过滤和搜索也不好用,甚至有的主题的Github Repo都404了,所以这个页面并不能从291个主题中,直观的告诉我们哪个主题好用。

不过万幸的是,Hexo官网本体也是开源的,所以我们能够很容易的找到这个主题列表的yaml原始数据[2]。我们用脚本读这个原始数据,并解析其中的Github repo名,再通过Github API获取这些repo的star数量,就可以大概看出来哪些主题比较热门(用的人比较多),然后选一个自己喜欢、好用(且大概率有人维护)的主题了。

阅读更多

如何优雅地撰写博客公众号

第一篇文章。好紧张。记录一下,怎么让写文章更舒适~

写博客,容易……吗?

为了激励自己多写一点东西,想将博客同步到刚刚申请的公众号上,这样也能为文字多带来一些曝光的机会。培养写作的习惯本已不易,一套方便趁手的工具链更是尤为重要。开始做了一些调研,发现要想输出一个带格式的文章,没有想象中的那么简单。尤其是看到很多人吐槽知乎编辑器难用,所以也特意看了看文章能不能也弄到知乎。最后总结一套还算舒服的写作工具,顺带讲讲整个流程。

阅读更多

新弄了一个兔兔

一个新的兔兔……域名!

兔兔.tk

还不知道干啥好,先让它跳到这里好咯。

一次失败的迅雷 Mac 版破解尝试

新片 Ready Player One 看得我心痒痒,想去海盗湾下一波枪版过过瘾。一本正经的用 uTorrent 下了一会……这尼玛太慢了受不了。迅雷——启动!下载,开……嗯?会员试用?试用!哇。爽歪歪!——会员试用结束!呃,比 uT 还慢的我天。正好心痒痒想实战一下怎么写一个 hook ,就来吧。

阅读更多