1. C2(Command & Control)란?
- C2 서버: 공격자가 감염된 장비(클라이언트)와 통신하여 명령을 전달하고 결과를 수집하는 서버
- 역할
- 명령 전송(Command Delivery): 클라이언트에 실행할 명령 전달
- 데이터 수집(Data Exfiltration): 클라이언트의 정보·작업 결과 수집
- 지속성 유지(Persistence): 장기간 은밀하게 통신 유지
- PowerShell, Python, C 등 다양한 언어로 구현 가능
2. 소켓 통신(Socket Communication) 개념
- 소켓(Socket): 네트워크에서 데이터 송수신을 위한 종단점(Endpoint)
- TCP / UDP 기반 동작 가능
- TCP: 신뢰성, 순서 보장 (C2에서 주로 사용)
- UDP: 속도 빠름, 신뢰성 낮음
- C2 구조에서 주로 TCP Socket 사용
3. 간단한 C2 구조 흐름
<aside>
💡
[1] 공격자 C2 서버 ──(명령 전송)──▶ [감염된 클라이언트]
[2] 감염된 클라이언트 ──(데이터 송신)──▶ [공격자 C2 서버]
</aside>
- 서버 대기: C2 서버가 특정 포트에서 연결을 기다림
- 클라이언트 접속: 감염된 시스템이 서버에 연결
- 명령 전송: 서버 → 클라이언트로 명령 전달
- 명령 실행: 클라이언트가 명령 실행 후 결과 전송
- 지속 통신: 필요 시 반복
4. 간단한 C2 예시 코드
4-1. 서버 (C2)