网站首页 包含标签 defense 的所有文章

  • 攻防演练 | 如何使用 Docker 搭建代理池+隧道代理

    前言 作为一种常见的服务器防御网络攻击或探测手段,封 IP 可以有效地保护服务器免受恶意攻击。在进行安全测试时,安全人员需要使用代理来隐藏真实 IP 地址,并依靠代理池获取可用的代理地址。同时,为了更方便地在某些工具中使用代理,可以借助隧道代理直接将请求转发给不同的代理服务器,从而避免 IP 被封锁。 本文介绍了一种利用 Docker 搭建代理池和隧道代理的方法,并通过对 httpbin.org 的访问和红队工具 dirsearch 的使用进行了测试。这种方法能够快速搭建一个免费、高效、稳定且易于管理的代理环境,在进行网络渗透测试等任务时非常有帮助。 下图为搭建过程的流程图: Docker 的准备 我这里都是使用的 Docker 搭建。 Docker 可能用到的命令如下: # 查看当前运行的 docker 容器 ID 和运行状况 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c09ae6b9c554 tunnel_proxy:0.02 "/usr/local/openrest…" 2 hours ago Up 2 hours tunnel_proxy 17bc67d0f892 germey/proxypool:master "supervisord -c supe…" 2 hours ago Up 2 hours 0.0.0.0:5555->5555/tcp, :::5555->5555/tcp proxypool b659295a7927 redis:alpine "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:6374->6379/tcp, :::6374->6379/tcp redis4proxypool [root@localhost ~]# docker exec -it 17 /bin/sh/app # lsDockerfile README.md docker-compose.yml kubernetes release.sh run.py supervisord.logLICENSE build.yaml examples proxypool requirements.txt supervisord.conf exit 退出   命令:docker exec -it <id> /bin/bash在指定 id 的 Docker 容器中执行指令,id 通过docker ps命令来获取。如果执行的是 shell 程序比如 /bin/bash 或者 /bin/sh 就能进入到容器的 shell 里,可以执行一些 linux 指令,id 可以使用前几位可以区分不同容器的字符就行,我这里用的前两位。 如果在接下来的配置中有问题,可以使用这种方式进入容器里查看日志,或者按照我的配置将日志文件映射到本地。 启动 Docker 用的程序是 docker-compose。如果你输入 docker-compose 提示找不到这个程序,有可能是没有安装或者是 /bin 目录下没有。 使用docker info命令查看 docker-compose 程序的位置 [root@localhost ~]# docker infoClient: Docker Engine - Community Version: 24.0.2 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.10.5 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.18.1 Path: /usr/libexec/docker/cli-plugins/docker-compose 检查一下 docker-compose 有无执行权限,如果没有,就要sudo chmod +x /usr/local/bin/docker-compose赋予执行权限 [root@localhost proxy_pool]# cd /usr/libexec/docker/cli-plugins/[root@localhost cli-plugins]# ll总用量 108356-rwxr-xr-x 1 root root 56327368 5月 26 05:56 docker-buildx-rwxr-xr-x 1 root root 54627904 5月 20 02:09 docker-compose 如果无法直接运行 docker-compose,可能需要创建软链接 [root@localhost cli-plugins]# ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose[root@localhost work]# docker-compose --versionDocker Compose version v2.18.1 代理池 ProxyPool 我这里用的是开源的代理池,自动从免费代理网站上爬取 http 代理。Python3WebSpider/ProxyPool 这个项目有四个模块:获取IP模块,存储模块,检测模块,接口模块。它包含两个 Docker 容器:redis4proxypool 和 proxypool,对于容器的设置都在 ProxyPool 根目录的 docker-compose.yml 文件里。对于容器的配置留到下部分再详细描述,先跑起来再说。 首先 gitclone git clone https://github.com/Python3WebSpider/ProxyPool.gitcd ProxyPool 然后启动 docker 环境 docker-compose up 这时候如果防火前的 5555 端口是开放的,访问 http://<当前 ip>:5555/random 即可随机获取一个可用代理,不需要做任何的修改。效果图如下: random 接口返回的是随机的高分 IP,也就是已验证能访问测试 URL 的 IP。高分,指的是在 redis 数据库中,获取 IP 模块获取的每一条 IP 的分数,如果检测模块用 IP 访问测试链接,能成功访问则设置这个分数为 100,单次测试访问失败则将分数减 1。 ProxyPool 的配置 在 ProxyPool 目录下使用命令docker-compose down可以关闭 docker。接下来,我们修改 ProxyPool 的配置。它包含两个容器,一个是 redis4proxypool,也就是 redis 数据库的部分,下文用 redis 来代替,另一个容器是 proxypool,也就是负责代理池逻辑的部分。 redis 为了查看或者 redis 里的这些数据,首先要设置 docker-compose.yml,设置 6374 的端口映射 version: "3"services: redis4proxypool: image: redis:alpine container_name: redis4proxypool # 把容器内部的 6379 端口映射到宿主机(host)的 6374 端口,这样就可以通过宿主机的 6374 端口来访问容器内部的 Redis 数据库 ports: - "6374:6379" proxypool: image: "germey/proxypool:master" container_name: proxypool ports: - "5555:5555" restart: always # volumes: # - proxypool/crawlers/private:/app/proxypool/crawlers/private environment: PROXYPOOL_REDIS_HOST: redis4proxypool 开启容器之后,要查看 redis 用到的命令如下: [root@localhost ProxyPool]# redis-cli -h 127.0.0.1 -p 6374   keys * 获取 redis 中所有的 key 127.0.0.1:6374> keys * "proxies:universal" type <key> 获取 key 的类型 127.0.0.1:6374> type proxies:universalzset 因为是 zset 有序类型,所以用 zrange 获取所有数据,后面两个参数是开始位置和结束位置 127.0.0.1:6374> zrange proxies:universal 0 -1...18156) "72.44.101.173:8080"18157) "95.56.254.139:3128" 获取分数为 100 的,用 zrangebyscore,后面两个参数是最小值和最大值 127.0.0.1:6374> zrangebyscore proxies:universal 99 100 "103.189.96.98:8085" "186.121.235.66:8080" "200.4.217.203:999" "103.74.121.88:3128" "117.251.103.186:8080"... exit 退出 proxypool 针对 proxypool 也有不少设置可以自定义,在使用 Docker 的情况下,在 docker-compose.yml 文件中,设置 environment 参数即可。 这里修改了 volumes 参数,把容器里的指定文件夹映射到宿主机的指定位置。proxypool 在容器里工作的根目录是 /app,所以这里是把 /app/proxypool/logs 文件夹映射到主机的 ProxyPool/logs/proxypool 目录下。 设置了以下环境变量: CYCLE_TESTER, Tester 运行周期,即间隔多久运行一次测试,默认 20 秒,这里修改为 5 秒。 PROXYPOOL_REDIS_PORT,容器内部的 6379 连接 redis4proxypool。 TEST_URL, 测试 URL,默认百度,指定要爬取的 URL。 REDIS_KEY,redis 储存代理使用字典的名称,其中 PROXYPOOL_REDIS_KEY 会覆盖 REDIS_KEY 的值。 LOG_DIR: "proxypool/logs" ,这个参数不知道为啥设置了并没有什么用,尝试了 n 遍,本来按照源码,没有上面这个参数也应该写到 logs 相对目录下,但是程序并没有写入,所以保存日志文件只能用下面这种相对路径的写法。 LOG_RUNTIME_FILE,运行日志文件名称。 LOG_ERROR_FILE,错误日志文件名称。 加了 depends_on 参数,意思是先启动 redis4proxypool 在启动 proxypool,这样确保在启动 proxypool 之前先启动了 redis4proxypool,以避免可能的连接问题。 version: "3"services:redis4proxypool:image: redis:alpinecontainer_name: redis4proxypoolports: "6374:6379"proxypool:image: "germey/proxypool:master"container_name: proxypoolports: "5555:5555"restart: always volumes: ./logs/proxypool:/app/proxypool/logsvolumes: - proxypool/crawlers/private:/app/proxypool/crawlers/private environment:CYCLE_TESTER: 5PROXYPOOL_REDIS_HOST: redis4proxypoolPROXYPOOL_REDIS_PORT: 6379TEST_URL: https://httpbin.org/ipREDIS_KEY: proxies:httpbinLOG_RUNTIME_FILE: "./proxypool/logs/proxypool_runtime.log"LOG_ERROR_FILE: "./proxypool/logs/proxypool_error.log"depends_on: redis4proxypool 隧道代理 我们使用一些扫描或者爆破工具的时候,大部分情况下,配置选项中只能选择一条代理,被封 IP 的可能性仍然很大,有没有什么方法能在请求的时候自动切换代理服务器呢?这就是隧道代理。 隧道代理服务器,能将接收到的请求随机或者按规则转发给不同的代理,这样,相当于在工具中只需要设置代理为隧道代理服务器,自动切换 IP 的任务交给隧道代理。 我这里使用的 OpenResty 搭建的隧道代理,也是用的 Docker,并把配置整合到了 docker-compose.yml 文件中。 参考链接:openresty实现隧道代理 ...

    2023-10-21 331
  • 以“溯源”为诱饵反钓鱼蓝队,攻击队这波上大分

    2023年攻防演练活动圆满收官,各位七夕节还在疯狂打HW的红蓝队师傅们辛苦了。上次分享了一些蓝队方面的想法,“攻防演练之给蓝队防守方的11个忠告”,感兴趣的师傅们可以在FreeBuf网站查看。这篇文章分享一下2023年攻防演练中红队的一些个人想法,希望和大家一起交流交流。如有不对之处,还请师傅们多多指教。 回顾2023年攻防演练行动,发生了很多非常有意思的事情,攻击队的整体表现令业界眼前一亮,给不少蓝队成员上了难忘的一课。例如在攻防演练行动刚刚开始时,就传出某某通信领域的单位被攻击队直接打穿;某某攻击队已经杀疯了等多种版本的传闻。由于事件的敏感性和保密性,导致很多消息难以百分百实锤,但也从侧面反映出2023年攻击队之强悍,战法之新颖,武器之犀利等。 最最令人感到不可思议的是,某个攻击队竟然想出一个“以溯源反制”为诱饵,引诱蓝队防守成员进入恶意环境,成功钓鱼蓝队的方法,在网络安全领域展示了一波什么才是真正的对抗,以及孙子兵法如何活灵活现应用至攻防演练行动中。 正是因为有如此出人意料的攻击方式的存在,才让攻防演练行动变得更加有意义。在攻防演练中发现问题,解决问题,真正提升企业安全防护能力,从而提升我国网络空间整体安全等级,才是攻防演练的最终目的和真正意义。 为2023年攻防演练行动中攻击队的优异表现点赞。但在攻防演练圆满收官的时候,攻击队这边也曝出舞蹈生滥竽充数的案例,其令网安行业震惊的程度不亚于上述新颖的攻击战法,甚至是有过之而无不及,可以预见,在2024年的攻防演练行动中,新人面试攻击成员将会遭遇前所未有的难度。 接下来,我会一一分享个人总结的2023年攻防演练观点,欢迎评论区留言讨论。 签了保密协议就认真履行 2023年攻防演练行动最后一天最大的瓜莫过于“苕皮哥了”。这位“苕皮哥”是某蓝队防守方成员,攻防演练的最后一天在红书发文:“暑假12天挣了3万多,奖励自己吃苕皮”,一时间引起轩然大波,迅速在整个网安圈子里流传,更是震惊了一众圈外打工人,纷纷在社交平台上惊呼“网安人搞钱太容易了。” 据说“苕皮哥”并非专业的网安人,而是一名在校舞蹈生,经过三个月的学习后以在校生的身份参加了2023年攻防演练行动,单日收入2700元。说实话这个工资已经吊打许多网安毕业生了。 不知道是觉得钱拿的过于容易,还是为了炫耀,“苕皮哥”干了一件很无脑的事情——直接公布了攻防演练进场合同,上面明确写了进场工资1800元,工作12小时以上工资上浮1.5倍,也就是2700元。 打过HW的师傅们都知道,一般这类合同都有保密协议,就这样不打码直接将进场合同发在社交平台上,对于厂商、甲方、第三方来说都是一种巨大的伤害。传闻“苕皮哥”事件传开后,厂商已经在琢磨起诉事宜,后续等待“苕皮哥”的也是会是更重的处罚。 最最糟糕的是这件事情将会给攻防演练行动的外聘人员带来严重的负面影响,很有可能以后在校大学生在面试hw时会面临更严格的要求,价格肯定也会迎来一波跳水,甚至有可能引发相关部门对于攻防演练外聘人员的整顿。“苕皮哥”行为出发点也许就是单纯的炫一波,但是最终的结果却是把网安吃饭的桌子都给掀了。 当然,从长远来看,这件事情也许会让攻防演练行动变得越来越规范,一些行业乱象将会被整改。这里强调一下,签了保密合同就要认真履行保密协议,真的别不当回事,当法院传票发来的那一刻,对于个人来说将会面临非常严重的后果。 攻击队上演“三十六计” 2023年另外一件令我大开眼界的事情,就是攻击队在攻防演练中上演了一波精彩的网安三十六计。整个攻击过程异常丝滑犹如行云流水,攻击方心思缜密层层设局,洞悉防守方的内心,一步步将防守方成员引入陷阱之中,将三十六计是玩的明明白白,实在是令人拍案叫绝,该狠狠上一波大分。 通常来说,蓝队防守方利用蜜罐来钓鱼攻击方是非常常见的手法,也是蓝队溯源反制必不可少的措施,蜜罐用的好,攻防演练的成绩基本也不会差到哪里去。但是红队以“溯源反制”为诱饵,反过来钓鱼蓝队这就不常见了。事实上这一次反钓鱼的效果非常好,蓝队成员大多中了圈套,后面结果如何已经不需要多说。 具体操作思路如下:红队故意发起攻击是蓝队进行溯源反制,在这个过程中诱导蓝队访问器搭建的恶意服务,钓鱼公告后红队再次对蓝队主机进行攻击反制,从而顺利获得防守方的内网权限。整个攻击方法不仅仅体现在技术高超,更多的是利用了规则——即没有多少蓝队能够抵得住“溯源反制”的诱惑,从而反钓鱼蓝队拿下权限。 2023年的这个案例充分说明了,网络攻防演练不是套路化的演习,而是实打实的攻守双方的激烈对抗,真正的攻击方不会和你讲任何的经验与套路,只会不断掏出新的攻击方法持续碾压你们。该案例也从侧面说明了攻防演练的实质,演习即实战,在攻防演练行动中,防守方必须时刻牢记,自己面对的是一群不论技术还是理念都十分先进的对手,千万不可放松警惕。如果我是本次攻防演练的裁判,那么我会给攻击方更多的分数,正是因为有这样持续进化的攻击方,我们的网络安全防护体系才能持续不断发展、优化。 旧的攻击方法依旧很好用 他山之石可以攻玉。在攻防演练行动开始之前,攻击队应该提前收集各类优秀的攻击方法和案例,总结学习其中的优秀思路和手法, 在攻防演练中,攻击方会利用各种技术手段和方法,如网络渗透、漏洞利用等,来尝试入侵防守方的系统或获取敏感信息。他们的目标是发现潜在的漏洞和弱点,并评估防守方对这些攻击的应对能力。红队常见的攻击方法可以分为以下八类: 互联网边界渗透。几乎所有企业都有部分开放于互联网的设备或系统,比如邮件、官网等。红队会以这些设备或系统的开放性特点,将其作为入侵的切入点。 通用产品组件漏洞利用。信息化产品虽然提高了企业的运行效率,但其自身的安全漏洞也给企业带来了很多潜在隐患。红队在攻防演练中就经常通过利用产品组件的漏洞来达成攻击目标,比如:OA漏洞、中间件漏洞、数据库漏洞等。 0day攻击。在攻防演练中,0day攻击已成为常态,由于0day漏洞能够穿透现有基于 ...

    2023-10-09 201
  • 攻防演练 | HW实战中钓鱼全流程梳理

    0x01前言 临近攻防演习,传统的web打点在没有0day的条件下变得非常困难,钓鱼成为一种相对容易的打点方式。本篇文章将介绍个人总结的钓鱼全流程,包括发送阶段注意事项、钓鱼话术、上线后注意事项。 本文不讨论免杀技术,均在当前已有一个能过国内主流杀软的exe,想让目标上线至我们C2服务器的情境下展开。 个人偏向于通过邮件来实施钓鱼,文章将重点讲解钓鱼邮件的全流程。当然电话、wx钓鱼的方式成功率更高,也需要更强的社牛属性。 0x02发送阶段注意事项 1、邮箱收集 网页泄露:官网联系邮箱、招标文件、招聘信息、投诉邮箱等等。 查询工具:https://hunter.io/search http://www.skymem.i nfo/srch 2、少用群发 群发的邮件内容定制化程度低、可信度低,一旦被发现认定为钓鱼邮件,防守方会对木马文件进行分析,进而导致辛辛苦苦做好的免杀马被上传到云平台,最终失去免杀效果。 我个人偏向于通过常规163邮箱来发送邮件,gophis等钓鱼工具用的不是很熟练。 当然,如果想要尝试群发,需要开启选项:“分别发送”,不然收件人会知道你同时发了很多邮件给别人,很容易被识别出来这是一封钓鱼邮件。 3、修改邮箱前缀和昵称 邮箱的昵称是可以多次更改的,每次发送邮件前修改昵称,使昵称更符合情景。收件人先看到的是你的昵称,而不是邮箱号。   4、使用代理 收件人可以看到发件人发件时的IP,请选择一个合适区域的代理,不要远到国外,也不要暴露自己真实的IP。 5、绕过邮件网关 遇到邮件网关,可以尝试压缩包加密、或将恶意链接修改为二维码图片。 0x03钓鱼话术 在不同场景要有不同的钓鱼话术,接下来将从HR、企业、xx局三个目标来定制不同话术。 HR->简历 针对HR通常将木马伪造成简历,我通常将exe的名称加长,可以达到让受害者看不到后缀名的效果,同时使用resourcehacker修改exe图标为word、wps之类的图标,再将exe压缩后发送,实现以假乱真的效果 木马名称:“xxxxx大学——xxx简历——xxxx求职咨询.exe” 受害者看到的木马:word图标、名称为“xxxx大学——xxx简历——...” 话 ...

    2023-08-23 255
  • 攻防演练|记一次对xx教育局攻防总结

    前言 这次攻防演练每个队伍分配不同的目标,有些队伍拿的点可以直接 nday 打,有些队伍外网打点十分困难比如我们,但分数是是统一算的,可以说不是那么的公平。不过也算是提供了些许经验,简单做一下总结,都是比较基础的东西,如有写的不正确的地方欢迎各位师傅指正。 外网打点 敏感信息泄露 一般来说学校外网能拿直接权限的点已经很少了,web 应用大多是放在 vpn 后面,因此能弄到一个 vpn 账号可以说是事半功倍 另外还可以通过语法筛选出存在默认弱口令的系统,常用命令如下: PLAINTEXT 1 2 3 4 5 6 7 #google语法 site:*.edu.cn intext: vpn | 用户名 | 密码 | 帐号 | 默认密码 #github*.edu.cn password   查看方式优先选择最近更新,太久远的基本上失效了 这里队友收集到了某个目标的 vpn 账号,使用的是 姓名拼音/12345678 弱口令 进去内网后能访问的只有一个 OA 系统,测试了一下没发现什么东西,寻找其他突破口 shiro 无链 常规的打点可通过 fofa、hunter、quake 等网络测绘平台进行资产收集,收集好后进行去重,把去重后的资产列表进行批量指纹识别,筛选出重要易打点的系统 在常规的 hw 中这些方法比较通用,但是对于教育行业来说会相对困难,有 edusrc 的存在许多通用型漏洞已经被提交修复了,因此在信息搜集的时候要多去寻找旁站和一些容易被遗漏的站点 坐了一天牢后,终于通过测绘平台找到一个比较偏的资产,直接访问是一个静态页面,但扫描目录后指纹识别一波发现是 shiro 直接工具开冲,发现有默认 key 但是无利用链 这里想到之前学习 shiro 可以无依赖利用,感觉有戏尝试一波,相关知识可学习此文章 https://www.le1a.com/posts/a5f4a9e3/ PLAINTEXT 12 java -jar shiro_tool.jar 地址VPS:端口 通过 dnslog 测试有回显,这里有个注意点:使用 http://dnslog.cn/部分站点会拦截,可以换多个 dnslog 平台测试 dnslog 有回显接下来就是拿 shell 了,这里由于固化思维,之前遇到的都是 linux 系统,先入为主觉得是 Linux,结果没利用成功 这里可以通过网站快速生成 payload,https://x.hacking8.com/java-runtime.html 一开始以为是防火墙拦截,后面队友探测了一下目录结构,发现是 windows,所以这里 payload 要改变一下 Linux:  ...

    2023-08-11 239

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注