📖
레드팀 플레이북
깃허브기여하는 방법WhoAreWe블로그
  • 레드팀 플레이북
  • 레드팀이란
  • 레드팀 글로벌 동향 (2024)
  • 베이직 레드팀(Basic Redteam)
    • 개요
    • 1. 공격자 인프라 구성
    • 2. 초기 침투
    • 3. 정보 수집
    • 4. 권한 상승 - US
    • 5. 횡적 이동: USWKSTN01 -> SQL01
    • 6. 권한 상승 - SQL01
    • 7. 도메인 장악 WEB01
    • 8. US -> RT 장악
    • 9. RT -> DEV 정보 수집
    • 10. 권한 상승 및 목표 달성
  • 🚧인프라 (Infrastructure)
    • 개념
    • 예시 인프라
    • 팀 서버 - Sliver
      • 스테이저 (Stager) 사용
    • 도메인 분류와 신뢰도
    • HTTP 리다이렉터
    • HTTPS 리다이렉터
    • SMTP Gophish + Mail
    • SMTP Gophish + ESP
    • SMTP Gophish + Relay + ESP
    • 인프라 구축 자동화
      • 테라폼 (Terraform)
      • SMTP 테라폼 자동화
      • HTTPS 리다이렉터 자동화 (AWS)
    • old-네뷸라를 이용한 인프라 구축
      • 도메인과 리다이렉터 설정
      • 중립 공간 (클라우드) 설정
      • 네뷸라 (Nebula)
      • 네뷸라 설정
    • 도메인 프론팅 (Domain Fronting)
    • 도메인 프론팅 - Azure Edgio CDN
    • Cloudflared Tunnel과 Worker
    • Cloudflared Tunnel과 Pages
  • 🔎초기 정찰
    • 개념
    • 타겟 발견
    • OSINT
      • 작전보안
      • 자산 정보 수집
      • 구글 도킹
  • ⚔️초기 침투 (Initial Access)
    • 개념
    • 피싱 첨부파일
      • 오피스 VBA 매크로
      • XLM Excel 4.0 매크로
      • 원격 템플렛 인젝션
      • VBA Stomping
      • HTA
      • LNK
      • ISO
      • VBA Purging - TODO
      • DotNetToJS - TODO
      • Follina - TODO
    • HTML 스머글링 (Smuggling)
    • 피싱 - AitM (Adversary in the Middle)
    • Living Off Trusted Sites (LOTS)
  • 🐳정보 수집 - 내부망
    • 개념
    • 로컬 호스트 정보 수집
    • 블러드하운드
    • SMB 쉐어 수집
    • 정보 수집 - 파워쉘
    • 정보 수집 - C# - TODO
    • 커버로스 유저 이름 정보수집
    • CME - 호스트이름과 IP주소
    • LDAP Anonymous Bind
  • 🐴실행 (Execution)
    • 개념
    • 파워쉘
      • 인메모리 실행
      • C# 실행
      • 윈도우 API 실행
    • LOLBAS
    • Native API - TODO
  • 🙃지속성 (Persistence)
    • 개념
    • 골든 티켓 (Golden Ticket)
    • DLL 사이드로딩 (DLL Side-Loading)
    • DLL Search Order Hijacking - TODO
    • 레지스트리 / 스타트업 폴더
  • ⬆️권한 상승
    • 개념
    • AD 권한 상승
      • Active Directory Certificate Services (ADCS)
        • ESC1
        • ESC8
      • Shadow Credentials
      • noPac
      • Kerberoasting
      • AS-REP Roasting
      • DHCPv6 포이즈닝
      • Resource-Based Constrained Delegation (RBCD)
      • SCCM
    • AD-DACL
      • AddAllowedToAct
      • AddKeyCredentialLink
      • GenericAll
      • GenericWrite
      • WriteDACL
      • AllExtendedRights
      • WriteAccountRestrictions
      • WriteOwner
      • AddMember
    • 로컬 권한 상승 - TODO
      • 잘못된 서비스 설정
      • Unquoted Service Path
      • Always Install Elevated
      • PrintNightmare
  • 🐍보안 우회 (Defense Evasion)
    • 쉘코드 암호화
    • 런타임 다이나믹 링킹 (Run-time Dynamic Linking)
    • AMSI 우회
    • 유저랜드 후킹 - 역사
    • 유저랜드 커널랜드 윈도우API 개념
    • 유저랜드 후킹
    • DInvoke - 시스템 콜
    • 페이로드 크기
    • 가변적 C2 프로필
    • 프로세스 인젝션
      • CreateRemoteThread
      • NtMapViewOfSection
    • 간단 디펜더 우회 - 쉘코드
    • 간단 디펜더 우회 - C#
    • MSIExec
    • 다형성 코드
  • 👿후속 공격 (Post Exploitation)
    • 후속 공격의 진화
    • External SID Golden Ticket
  • 🎭계정 정보 탈취 (Credential Access)
    • 커버로스
      • 커버로스팅 (Kerberoasting)
      • AS-Rep Roasting
    • 비밀번호 스프레이 공격
    • LLMNR/NBT-NS 포이즈닝
    • NTLM 릴레이 (NTLM Relay)
      • SMB to SMB
      • SMB to LDAP/S
      • HTTP to LDAP
      • SMB to HTTP
      • SMB to SCCM
    • 강제 인증 (Authentication Coercion)
      • MS-RPRN - Printerbug / Print Spooler
      • MS-EFSRPC - Petitpotam
      • MS-FSRVP - ShadowCoerce
      • MS-DFSNM - DFSCoerce
    • NTLM 다운그레이드
    • DHCPv6 포이즈닝
    • LAPS - TODO
    • DCSync
    • DPAPI
  • ↔️횡적 이동 (Lateral Movement)
    • 개념
    • Pass-the-Hash
    • SMB 와 PsExec
    • WMI
    • WinRM / Powershell Remoting
    • RDP
    • SSH Port Forwarding & Tunneling
    • Dynamic Port Forwarding & ProxyChains
    • 네트워크 피버팅 - 툴
    • Network Pivoting (피벗) - TODO
  • 개념
    • 윈도우 사용자 인증
      • NTLM 인증
      • 커버로스 (Kerberos) 인증 - TODO
      • ADCS 인증서 기반 인증
    • AD 관련 용어 해설
  • 실 공격 TTP와 대응방안 - TODO
    • 개념
  • 🧑‍🔬홈 랩 (Home lab)
    • 시스몬 (sysmon) 설치
    • SIEM과 EDR 솔루션 설치
    • 취약한 랩을 위한 설정 커맨드
    • 말웨어 자동 분석툴 Cuckoo 샌드박스 설치
  • 기본 개념
    • DNS
      • 사이버 보안에 필요한 DNS 개념 편 #1
      • 해킹에 필요한 DNS 공격 & 우회 기법 편 #2
      • 방어에 필요한 DNS 탐지 편 #3
  • 웹 & 모바일
    • 01-계정관리
      • 통신 과정 흐름 훑어보기
      • 첫번쩨, payload설정 방법
      • 두번째, 세션을 유지하는 방법
      • CSRF Token에 관하여
      • 세번째, OWASP Juice Shop 로그인 페이지에서의 통신 흐름과 구조 알아보기
  • 🎅MISC
    • Host-based 공격 CheatSheet (FEAT. OSCP)
      • Enumeration (정보 수집 및 열거)
      • Exploitation (공격)
      • Post Exploitation (후속공격)
    • Changelog
    • 기여하는 방법
    • 레퍼런스와 크레딧
    • C# snippets
    • winapi 리스트
      • original notes from obsidian
    • 파워쉘 원라이너 (oneliner)
  • 📖Personal-Research
    • README-and-Template
      • HellsGate
      • HalosGate
      • FreshyCall
Powered by GitBook
On this page
  • 가변적 C2 프로필
  • 미래
  1. 보안 우회 (Defense Evasion)

가변적 C2 프로필

Previous페이로드 크기Next프로세스 인젝션

Last updated 2 years ago

네트워크 안 어딘가에서 실행중인 비컨/에이전트 등의 RAT 악성코드들을 구분해내는 전통적인 방법 중 하나는 바로 콜백 트래픽의 특성을 살펴보는 것이였다. 아직도 많은 악성코드 분석 및 포렌식 보고서를 살펴보면 다음과 같은 네트워크 기반 IoC들이 언급되곤 한다:

  • IP 주소 및 도메인 주소

  • HTTP(S) -엔드포인트 주소

  • HTTP(S) - GET/POST 등에서 사용되는 파라미터 이름과 값 등

  • HTTP(S) - HTTP 헤더 이름과 값

이들을 모두 합쳐 "APT 999 그룹의 darkchoi 악성코드는 <공격자도메인> 의 /login.php에 GET과 POST 리퀘스트를 보내며, 파라미터는 "name", 쿠키는 "sessionID-choi" 등을 쓴다..." 라는 문구를 많이 볼 수 있다. 블루팀들은 이와 같이 네트워크 IoC 기반으로 탐지룰을 짜기도 한다.

예를 들어 슬리버 C2의 기본적인 HTTP 네트워크 트래픽은 다음과 같다.

본인이 블루팀이라면 어떤 논리들로 네트워크 트래픽 탐지룰을 작성할 것인가?

  • 슬리버 서버는 세션 관련 HTTP 요청에 HTTP 202 Accepted를 반환한다 - 정기적으로 202 응답을 보내는 서버를 찾아본다.

  • 슬리버 서버는 웹서버 관련 이름, 버전이 들어간 HTTP 헤더가 아예 존재하지 않는다.

  • 슬리버 비컨은 하트비트 콜백을 할 때 .js 파일을 요청한다 - 정기적으로 특정 서버에게 .js 파일을 요청하는 트래픽을 찾아본다.

  • 슬리버 비컨은 세션 관련 콜백을 할 때 .php 파일을 요청한다 - 정기적으로 특정 서버에게 .php 파일을 요청하는 트래픽을 찾아본다.

  • 슬리버 비컨은 기본적으로 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.3380.71 Safari/537.36 유저 에이전트를 사용한다.

  • 슬리버 비컨은 세션 구축 후 APISID 라는 세션 쿠키를 사용하고 있다.

해당 탐지룰을 잘 조합해 탐지룰을 구축한다면, 앞으로 슬리버 C2를 사용하는 모든 공격자들을 탐지할 수 있을 것이다 - 라고 모든 블루팀들이 생각했고, 실제로 옛날 공격자들은 이런 탐지룰에 걸리면 전체 작전이 끝나곤 했다. 많은 네트워크 트래픽 관련된 특성들이 하드코딩 되었기 때문이다.

가변적 C2 프로필

예를 들어 위 슬리버 비컨/서버가 가지고 있던 네트워크 IoC 들 - .js, .php, APISID, 202 Accepted, Mozilla/5.0 (Windows NT 10.0; Win64; x64 을 바꾸는 가변적 C2 프로필을 적용시켜보자.

가변적 C2 프로필을 적용시키고 나니 몇가지 바뀐점이 보인다

  • 엔드 포인트의 이름들이 모두 바뀌고, 엔드포인트 확장자는 .asp 로 바뀌었다.

  • User-Agent 도 바뀌었다

  • 쿠키도 session-id 로 바뀌었다

  • 서버 헤더 Server: Microsoft-IIS/10.0, X-Powered-By: ASP.NET 등이 추가됐다

  • 이 외 GET/POST 파라미터 또한 바꿀 수 있다

적용한 가변적 C2 프로필은 다음과 같다.

http-c2.json
{
    "implant_config": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0",
        "url_parameters": null,
        "headers": null,
        "max_files": 3,
        "min_files": 1,
        "max_paths": 3,
        "min_paths": 1,
        "stager_file_ext": ".woff",
        "poll_file_ext": ".asp",
        "poll_files": [
            "aboutus",
            "lsp",
            "session",
            "account"
        ],
        "poll_paths": [
            "en-us",
            "about",
            "today",
            "view",
            "shopping",
            "store"
        ],
        "start_session_file_ext": ".html",
        "session_file_ext": ".aspx",
        "session_files": [
            "login",
            "signin",
            "view",
            "api",
            "index",
            "admin",
            "register",
            "sign-up"
        ],
        "session_paths": [
            "upload",
            "actions",
            "rest",
            "v1",
            "auth",
            "oauth2",
            "oauth2callback",
            "api"
        ],
        "close_file_ext": ".png",
        "close_files": [
            "favicon",
            "sample",
            "example"
        ],
        "close_paths": [
            "static",
            "www",
            "assets",
            "images",
            "icons",
            "image",
            "icon",
            "png"
        ]
    },
    "server_config": {
        "random_version_headers": false,
        "headers": [
            {
                "name": "Cache-Control",
                "value": "no-store, no-cache, must-revalidate",
                "probability": 100
            },
            {
                "name": "Server",
                "value": "Microsoft-IIS/10.0",
                "probability": 100
            },
            {
                "name": "X-Powered-By",
                "value": "ASP.NET",
                "probability": 100
            }
        ],
        "cookies": [
            "ASPSESSIONID",
            "ASP.NET_SessionId",
            "session-id"
        ]
    }
}

따라서 위에서 적용한 탐지룰은 이제 적용하기가 힘들어졌다. 새로운 탐지룰이 나오면 공격자는 또 가변적 C2 프로필을 바꿀 것이다.

미래

2014년도 이후 가변적 C2 프로필은 많이 진화해 다양한 "가변적 XYZ"가 많이 나왔다.

  • Hot-Swappable 가변적 C2 프로필 - 실시간으로 C2 프로필을 바꿀 수 있는 기능

  • Malleable PE - 생성하는 모든 PE 프로필에 자동적 난독화, IoC 랜덤화

  • Malleable Process Injection - 프로세스 인젝션을 실행할때마다 다른 인젝션 기법을 사용

  • Malleable Post Exploitation - 메모리상에서 실행되는 Post-Ex .NET 어셈블리, BOF, COFF 등의 난독화 및 IoC 랜덤화

시간이 지날수록 점점 더 유연하고 가변적인 공격용 툴과 방어용 툴의 대결이 계속 될 것 같다.

이런 문제점들을 해결하고자 2014년 코발트 스트라이크의 제작자인 Raphael Mudge는 (가변적 C2 프로필) 기능을 발표한다. 가변적 C2 프로필은 C2 서버와 비컨이 통신을 할 때 사용하는 네트워크 특성들을 바꾼 프로필을 생성한 뒤, 적용시키는 기능이다. 요새는 HTTP/S, DNS, ICMP 등의 다양한 프로토콜에도 가변적 프로토콜이 적용되곤 한다.

🐍
Malleable C2 Profile