침투 테스트(pentest)와 윤리적 해킹을 수행할 때, 실제 IP 주소를 숨기는 것이 매우 중요합니다. 이는 다양한 위치에서의 공격을 시뮬레이션할 뿐만 아니라 자신의 인프라를 보호하기 위해서입니다. WAF, IDS 및 IPS와 같은 보안 시스템은 하나의 IP에서 의심스러운 활동을 신속하게 차단하여 추가 테스트를 불가능하게 만듭니다. 이 기사에서는 펜테스트에 사용할 프록시, IP 회전 설정 방법 및 현대 보안 시스템을 우회하는 방법에 대해 알아보겠습니다.
펜테스트에서 프록시가 필요한 이유
침투 테스트는 시스템 소유자의 동의를 받아 수행되는 합법적인 활동입니다. 그러나 기술적으로는 공격처럼 보이며, 보안 시스템은 이에 적절히 반응합니다. 프록시는 펜테스트에서 여러 가지 중요한 문제를 해결합니다:
1. 실제 IP 주소 보호. 합법적인 테스트를 수행할 때도 자신의 실제 위치와 인프라를 노출하지 않는 것이 중요합니다. 외부 경계를 테스트하는 경우, 귀하의 IP는 다양한 보안 시스템의 블랙리스트에 올라갈 수 있으며, 이는 향후 문제를 일으킬 수 있습니다. 또한, 버그 바운티 프로그램에 참여할 때는 취약점을 공개하기 전까지 익명성을 유지하는 것이 중요합니다.
2. 비율 제한 및 IP 차단 우회. 현대의 WAF(Web Application Firewall) 및 IDS(Intrusion Detection System)는 하나의 IP에서 발생하는 요청 수를 추적합니다. 포트 스캔, 브루트 포스 또는 퍼징을 수행하는 경우, 금방 한도를 초과하여 차단될 수 있습니다. 프록시를 통한 IP 회전은 부하를 분산시키고 테스트를 계속할 수 있게 합니다.
3. 다양한 지리적 위치에서의 공격 시뮬레이션. 일부 보안 시스템은 지리적 차단(geo-blocking)을 적용하거나 지역별로 다른 규칙을 가지고 있습니다. 완전한 테스트를 위해서는 시스템이 미국, 유럽, 아시아의 요청에 어떻게 반응하는지 확인해야 합니다. 다양한 국가의 IP를 가진 프록시는 물리적으로 이동하지 않고도 이러한 테스트를 수행할 수 있게 합니다.
4. 분산 공격(DDoS 시뮬레이션) 테스트. DDoS 공격에 대한 저항력을 테스트할 때는 여러 IP 주소에서 트래픽을 시뮬레이션해야 합니다. 프록시 풀을 사용하면 현실적인 부하를 생성하고 시스템이 분산 공격을 어떻게 처리하는지 확인할 수 있습니다.
5. 핑거프린팅 및 TLS 분석 우회. 고급 보안 시스템은 IP뿐만 아니라 TLS 핑거프린트, User-Agent, HTTP 헤더도 분석합니다. 적절한 클라이언트 설정과 함께 프록시를 사용하면 이러한 분석을 우회하고 더 깊이 테스트할 수 있습니다.
윤리적 해킹에 적합한 프록시 유형
펜테스트에서는 작업에 따라 다양한 유형의 프록시를 사용합니다. 주요 옵션과 그 적용을 살펴보겠습니다:
| 프록시 유형 | 장점 | 단점 | 적용 |
|---|---|---|---|
| HTTP/HTTPS | 간단한 설정, 애플리케이션 레벨에서 작동 | 웹 트래픽만 가능, 헤더가 노출됨 | 웹 애플리케이션 테스트, 사이트 스캔 |
| SOCKS5 | 모든 프로토콜 지원, UDP 지원, 인증 가능 | 설정이 조금 더 복잡함 | 포트 스캔, 모든 프로토콜 작업 |
| 주거용 | 실제 인터넷 제공자의 IP, 낮은 신뢰 점수 | 비용이 더 비쌈, 속도 변동이 있음 | 엄격한 WAF 우회, 지리적 제한 테스트 |
| 데이터 센터 | 높은 속도, 안정성, 저렴한 가격 | 프록시로 쉽게 식별됨 | 대량 스캔, 브루트 포스, 퍼징 |
| 모바일 | 가장 높은 신뢰 점수, 동적 IP | 가장 비쌈, 속도가 느림 | 모바일 애플리케이션 테스트, 엄격한 차단 우회 |
SOCKS5 프로토콜 vs HTTP/HTTPS. 펜테스트에서는 SOCKS5가 더 선호됩니다. 이는 더 낮은 레벨에서 작동하며 TCP, UDP, DNS 요청 등 모든 유형의 트래픽을 통과시킵니다. 이는 Nmap, Metasploit, sqlmap와 같은 도구를 사용할 때 중요합니다. HTTP 프록시는 브라우저 또는 전문 웹 애플리케이션 스캐너(Burp Suite, OWASP ZAP)를 통한 웹 테스트에만 적합합니다.
SSH 터널 및 VPN. 일부 펜테스터는 프록시 대신 SSH 터널(동적 포트 포워딩) 또는 VPN을 사용합니다. SSH 터널은 SOCKS 프록시처럼 작동하며 대부분의 작업에 적합하지만 SSH 서버가 필요합니다. VPN은 모든 트래픽을 암호화하고 IP를 변경하지만, 주소 회전에는 덜 유연합니다. VPN 서버를 변경하면 모든 연결이 끊어집니다.
주거용 vs 데이터 센터: 무엇을 선택할까
주거용 프록시와 데이터 센터 프록시 중 선택은 목표 시스템과 그 보호 수준에 따라 다릅니다.
주거용 프록시를 사용할 때:
- 고급 봇 탐지 시스템(Cloudflare, Akamai, PerimeterX) 테스트
- 지리적 제한 및 지역 버전 애플리케이션 확인
- 데이터 센터를 차단하는 모바일 애플리케이션 및 API 테스트
- 최대의 눈에 띄지 않음이 중요한 버그 바운티 프로그램
- 소셜 엔지니어링 및 소셜 미디어를 통한 OSINT 정보 수집
주거용 프록시는 실제 인터넷 제공자의 IP 주소를 가지고 있으며, 일반 사용자들이 사용합니다. 보안 시스템은 해당 제공자의 전체 범위를 차단할 수 없으므로, 합법적인 사용자도 차단됩니다. 이러한 IP의 신뢰 점수는 상당히 높아 봇 탐지 검사를 통과할 수 있습니다.
데이터 센터 프록시를 사용할 때:
- 대량 포트 및 서비스 스캔(Nmap, Masscan)
- 비밀번호 및 디렉토리 브루트 포스(Hydra, Gobuster, ffuf)
- 웹 애플리케이션 퍼징(Burp Intruder, wfuzz)
- 엄격한 보호가 없는 내부 시스템 테스트
- 속도와 트래픽 양이 중요한 작업
데이터 센터 프록시는 주거용 프록시보다 5-10배 더 빠르며, 비용도 상당히 저렴합니다. 복잡한 보안 시스템을 우회할 필요가 없는 대부분의 펜테스트 작업에 최적의 선택입니다. 수천 개의 포트를 스캔하거나 웹 서버에서 수천 개의 경로를 시도할 때 속도가 매우 중요합니다.
혼합 접근법. 경험이 풍부한 펜테스터는 두 가지 유형의 프록시를 모두 사용합니다: 데이터 센터 프록시는 초기 정찰 및 대량 스캔에 사용하고, 주거용 프록시는 특정 취약점 테스트 및 보호 우회에 사용합니다. 예를 들어, 빠른 데이터 센터 프록시를 통해 포트 스캔을 수행한 후, 발견된 취약점을 주거용 IP를 통해 활용하여 발견 위험을 최소화할 수 있습니다.
프록시 체인 설정(proxy chains)
프록시 체인은 여러 프록시 서버를 통해 트래픽을 순차적으로 라우팅하는 기술입니다. 체인의 각 서버는 이전 프록시의 IP만을 보게 되어 실제 요청 출처를 추적하기가 매우 어렵습니다.
Linux에서 proxychains 설치 및 설정:
# 설치
sudo apt-get install proxychains4
# 구성 파일 편집
sudo nano /etc/proxychains4.conf
proxychains4.conf의 구성 예시:
# 작동 모드: dynamic (접속할 수 없는 프록시를 건너뜀)
dynamic_chain
# 조용한 모드 (프록시에 대한 정보를 출력하지 않음)
quiet_mode
# 프록시를 통한 DNS 요청 (익명성에 중요)
proxy_dns
# 프록시 목록 (순차적으로 추가됨)
[ProxyList]
socks5 192.168.1.100 1080 username password
socks5 45.67.89.123 1080
http 34.56.78.90 8080 user pass
proxychains의 작동 모드:
- dynamic_chain — 사용 가능한 모든 프록시를 순서대로 사용하며, 접속할 수 없는 프록시는 건너뜁니다. 펜테스트에 최적입니다.
- strict_chain — 모든 프록시를 엄격하게 순서대로 사용하며, 하나가 접속할 수 없으면 연결이 중단됩니다.
- random_chain — 각 연결에 대해 목록에서 무작위로 프록시를 선택합니다.
펜테스트 도구와의 사용:
# Nmap을 프록시 체인을 통해 사용
proxychains4 nmap -sT -Pn target.com
# Metasploit
proxychains4 msfconsole
# Sqlmap
proxychains4 sqlmap -u "http://target.com/page?id=1" --dbs
# Gobuster (디렉토리 브루트 포스)
proxychains4 gobuster dir -u http://target.com -w wordlist.txt
# Curl
proxychains4 curl https://target.com
프록시 체인 사용 시 중요한 사항:
- 체인의 각 프록시는 지연을 추가합니다 — 3개의 프록시로 구성된 체인은 ping을 50ms에서 500ms로 증가시킬 수 있습니다.
- DNS 요청은 프록시를 통해 이루어져야 합니다 (proxy_dns), 그렇지 않으면 실제 IP가 DNS를 통해 유출될 수 있습니다.
- 모든 도구가 proxychains를 통해 올바르게 작동하지 않습니다 — 일부는 raw sockets를 사용합니다.
- Nmap에서는 TCP 스캔(-sT)만 사용해야 하며, SYN 스캔(-sS)은 프록시를 통해 작동하지 않습니다.
대안: Tor + proxychains. Tor와 추가 프록시를 결합하여 익명성을 강화할 수 있습니다. Tor는 이미 3개의 노드로 구성된 체인을 사용하며, Tor에 들어가기 전이나 나간 후에 프록시를 추가하면 추가적인 보호 수준을 생성합니다:
# 구성: 프록시 → Tor → 목표
[ProxyList]
socks5 45.67.89.123 1080 # 외부 프록시
socks5 127.0.0.1 9050 # 로컬 Tor
IP 회전: 차단을 피하는 방법
IP 주소 회전은 비율 제한 및 IP 기반 차단을 우회하는 핵심 기술입니다. 현대의 WAF는 특정 기간 동안 하나의 IP에서 발생하는 요청 수를 추적합니다(예: 분당 100 요청). 한도를 초과하면 일시적 또는 영구적인 차단이 발생합니다.
프록시 회전 유형:
1. 프록시 제공자 수준에서의 회전(회전 프록시). 일부 제공자는 하나의 엔드포인트(IP:포트)를 제공하며, 각 요청 시 또는 특정 간격으로 자동으로 출발 IP를 변경합니다. 이는 가장 간단한 옵션으로, 코드 변경이 필요 없으며 단일 프록시 주소만 지정하면 됩니다.
# 회전 프록시 예제 (Python + requests)
import requests
proxies = {
'http': 'http://user:pass@rotating.proxy.com:8080',
'https': 'http://user:pass@rotating.proxy.com:8080'
}
# 각 요청은 새로운 IP로 진행됩니다.
for i in range(100):
response = requests.get('https://api.ipify.org', proxies=proxies)
print(f"요청 {i}: IP = {response.text}")
2. 애플리케이션 수준에서의 회전(프록시 풀). 프록시 목록을 받고 코드에서 전환 로직을 구현합니다. 이는 더 많은 제어를 제공합니다: 변경 빈도를 관리하고, 작동하지 않는 프록시를 제외하며, 부하를 분산시킬 수 있습니다.
# 회전이 포함된 프록시 풀 예제 (Python)
import requests
import random
from itertools import cycle
# 프록시 목록
proxy_list = [
'http://user:pass@45.67.89.1:8080',
'http://user:pass@45.67.89.2:8080',
'http://user:pass@45.67.89.3:8080',
'http://user:pass@45.67.89.4:8080',
]
# 순차적 회전을 위한 순환 이터레이터
proxy_cycle = cycle(proxy_list)
def get_with_rotation(url):
proxy = next(proxy_cycle)
proxies = {'http': proxy, 'https': proxy}
try:
response = requests.get(url, proxies=proxies, timeout=10)
return response
except requests.exceptions.RequestException as e:
print(f"프록시 {proxy}에서 오류 발생: {e}")
return None
# 사용 예
for i in range(20):
response = get_with_rotation('https://httpbin.org/ip')
if response:
print(f"요청 {i}: {response.json()}")
3. 세션 기반 회전. 상태(쿠키, 세션)를 유지해야 하는 작업에서는 프록시를 세션에 바인딩합니다. 하나의 세션 내에서 모든 요청에 대해 하나의 프록시를 사용하고, 새로운 세션을 위해 변경합니다.
# 세션 기반 회전
import requests
class ProxySession:
def __init__(self, proxy_list):
self.proxy_list = proxy_list
self.current_proxy_index = 0
def new_session(self):
session = requests.Session()
proxy = self.proxy_list[self.current_proxy_index]
session.proxies = {'http': proxy, 'https': proxy}
# 다음 세션을 위해 다음 프록시로 전환
self.current_proxy_index = (self.current_proxy_index + 1) % len(self.proxy_list)
return session
# 사용 예
proxy_manager = ProxySession(proxy_list)
# 세션 1: 프록시 1 사용
session1 = proxy_manager.new_session()
session1.get('https://target.com/login')
session1.post('https://target.com/api', data={'key': 'value'})
# 세션 2: 프록시 2 사용
session2 = proxy_manager.new_session()
session2.get('https://target.com/login')
작업에 따른 회전 전략:
- 비밀번호 브루트 포스 — 실패한 로그인 시도를 초과하지 않도록 5-10회마다 IP를 변경합니다.
- 포트 스캔 — IDS가 하나의 출처에서 스캔을 감지하지 않도록 100-500포트마다 IP를 변경합니다.
- 웹 폼 퍼징 — 20-50 요청마다 회전하여 다양한 사용자 시뮬레이션을 수행합니다.
- OSINT 데이터 수집 — 소셜 미디어 또는 검색 엔진 API에 대한 요청마다 회전합니다.
프록시의 작동 여부 모니터링. 회전 과정에서 일부 프록시가 작동하지 않을 수 있습니다. 작동하지 않는 프록시를 확인하고 제외하는 로직을 구현하는 것이 중요합니다:
# 프록시 확인 및 필터링
def check_proxy(proxy):
try:
response = requests.get(
'https://httpbin.org/ip',
proxies={'http': proxy, 'https': proxy},
timeout=5
)
return response.status_code == 200
except:
return False
# 목록 필터링
working_proxies = [p for p in proxy_list if check_proxy(p)]
print(f"작동하는 프록시: {len(working_proxies)}/{len(proxy_list)}")
펜테스트 도구와의 프록시 통합
대부분의 펜테스트 도구는 프록시를 통해 작동할 수 있습니다. 인기 있는 도구에 대한 설정을 살펴보겠습니다:
Burp Suite. 웹 애플리케이션 테스트를 위한 주요 도구 중 하나입니다. 프록시 설정:
- 사용자 옵션 → 연결 → 업스트림 프록시 서버
- 추가 → 프록시 주소, 포트, 유형(HTTP/SOCKS) 지정
- 회전을 위해 "Proxy Rotator"와 같은 확장 프로그램을 사용할 수 있습니다.
OWASP ZAP. Burp Suite의 오픈 소스 대안:
- 도구 → 옵션 → 연결 → 아웃고잉 프록시 서버 사용
- 주소, 포트, 인증 지정
- 모든 유형의 트래픽을 위한 SOCKS 프록시 지원
Nmap. 포트 및 서비스 스캐너입니다. 프록시 직접 지원은 없으며(일부 NSE 스크립트의 HTTP CONNECT 제외), proxychains를 통해 사용됩니다:
# TCP 스캔만 프록시를 통해 작동합니다.
proxychains4 nmap -sT -Pn -p 80,443,8080 target.com
# SYN 스캔은 raw sockets를 요구하며 프록시를 통해 작동하지 않습니다.
# nmap -sS target.com # proxychains를 통해 작동하지 않음
Sqlmap. SQL 인젝션을 자동으로 찾고 활용하는 도구입니다:
# 단일 프록시
sqlmap -u "http://target.com/page?id=1" --proxy="socks5://user:pass@45.67.89.1:1080"
# 프록시 목록 파일(회전)
sqlmap -u "http://target.com/page?id=1" --proxy-file=proxies.txt
# Tor를 통해
sqlmap -u "http://target.com/page?id=1" --tor --tor-type=SOCKS5
Metasploit Framework. 익스플로잇 개발 및 실행 플랫폼입니다:
# proxychains를 통해 실행
proxychains4 msfconsole
# 또는 Metasploit 내에서 설정
msf6 > setg Proxies socks5:45.67.89.1:1080
msf6 > setg ReverseAllowProxy true
# 특정 모듈에 대해
msf6 exploit(windows/smb/ms17_010_eternalblue) > set Proxies socks5:45.67.89.1:1080
Gobuster / ffuf. 디렉토리 및 파라미터 브루트 포스 도구입니다:
# Gobuster
gobuster dir -u http://target.com -w wordlist.txt -p socks5://45.67.89.1:1080
# ffuf와 프록시
ffuf -u http://target.com/FUZZ -w wordlist.txt -x socks5://45.67.89.1:1080
# ffuf와 회전(replay-proxy 사용)
ffuf -u http://target.com/FUZZ -w wordlist.txt -replay-proxy http://rotating.proxy.com:8080
Hydra. 다양한 프로토콜에 대한 비밀번호 브루트 포스 도구입니다:
# proxychains를 통해 (모든 프로토콜에 대해)
proxychains4 hydra -l admin -P passwords.txt ssh://target.com
# HTTP에 대한 네이티브 지원(제한적)
hydra -l admin -P passwords.txt target.com http-get -s 8080 -m /admin
Nuclei. 템플릿 기반의 현대적인 취약점 스캐너입니다:
# HTTP 프록시
nuclei -u https://target.com -proxy-url http://user:pass@45.67.89.1:8080
# SOCKS5
nuclei -u https://target.com -proxy-url socks5://user:pass@45.67.89.1:1080
# 여러 프록시(회전)
nuclei -list targets.txt -proxy-url http://proxy1.com:8080,http://proxy2.com:8080
WAF, IDS 및 기타 보안 시스템 우회
현대의 보안 시스템은 공격 탐지 방법을 다양하게 사용합니다. 프록시는 우회 전략의 일부일 뿐입니다. 종합적인 접근 방식을 살펴보겠습니다:
1. IP 기반 차단 우회. 가장 간단한 보호 수준은 IP 차단입니다. 이는 프록시 회전을 통해 비율 제한을 준수하면서 해결할 수 있습니다:
- 요청 간 지연을 사용하세요 (Python의 time.sleep)
- HTTP 429(요청이 너무 많음)를 받을 때 IP를 변경하세요
- 사람의 행동을 시뮬레이션하세요 — 요청 간 무작위 간격
2. 지리적 차단 우회. 일부 시스템은 전체 국가나 지역을 차단합니다. 필요한 국가의 주거용 프록시를 사용하세요:
# 예시: 다양한 국가에서 테스트
countries = ['US', 'GB', 'DE', 'FR']
for country in countries:
proxy = f'http://user-country-{country}:pass@proxy.com:8080'
response = requests.get('https://target.com', proxies={'http': proxy, 'https': proxy})
print(f"{country}: 상태 {response.status_code}")
3. 핑거프린팅 우회. 고급 WAF는 TLS 핑거프린트, HTTP 헤더 및 헤더 순서를 분석합니다. 실제 브라우저를 시뮬레이션하는 라이브러리를 사용하세요:
# curl-impersonate — 브라우저의 TLS 핑거프린트 시뮬레이션
curl_chrome116 --proxy socks5://45.67.89.1:1080 https://target.com
# Python: requests + curl_cffi (Cloudflare 우회)
from curl_cffi import requests
response = requests.get(
'https://target.com',
proxies={'https': 'socks5://45.67.89.1:1080'},
impersonate='chrome116'
)
4. 봇 탐지 우회. 이러한 시스템은 JavaScript 호출, 캔버스 핑거프린팅, WebGL 및 마우스 움직임 분석을 사용합니다. 해결책:
- 올바른 설정을 가진 헤드리스 브라우저 사용 (Playwright, Puppeteer)
- WebGL, Canvas, AudioContext를 변조하는 안티 탐지 기술 적용
- 주거용 프록시와 현실적인 User-Agent 결합
- 기존 솔루션 사용: undetected-chromedriver, playwright-stealth
# Playwright와 프록시 및 안티 탐지
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(
proxy={
'server': 'socks5://45.67.89.1:1080',
'username': 'user',
'password': 'pass'
}
)
context = browser.new_context(
user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
viewport={'width': 1920, 'height': 1080},
locale='en-US',
timezone_id='America/New_York'
)
# 웹드라이버 마스킹
context.add_init_script("""
Object.defineProperty(navigator, 'webdriver', {get: () => undefined})
""")
page = context.new_page()
page.goto('https://target.com')
# ... 이후 작업
5. IDS/IPS 우회. 이러한 시스템은 네트워크 트래픽을 공격 시그니처에 대해 분석합니다:
- 패킷 분할 — 페이로드를 작은 조각으로 나누세요
- 혼란 — 페이로드를 인코딩하세요 (base64, URL 인코딩, 유니코드)
- 시간에 따른 공격 분산 — 긴 간격으로 느린 스캔
- 프록시 회전 — 공격의 각 단계에서 다른 IP 사용
# Nmap: IDS 우회를 위한 느린 스캔
proxychains4 nmap -sT -Pn -T2 --scan-delay 5s -p- target.com
# -T2: 느린 타이밍 템플릿
# --scan-delay 5s: 포트 시도 간 5초 간격
# 프록시 회전과 조합하면 스캔이 거의 감지되지 않음
6. CAPTCHA 우회. 공격적인 테스트를 수행할 경우 CAPTCHA에 직면할 수 있습니다. 옵션:
- 공격성 감소 — 요청 수를 줄이고 지연을 늘리세요
- CAPTCHA 해결 서비스 사용 (2captcha, Anti-Captcha) — 버그 바운티용
- CAPTCHA가 없는 대체 엔드포인트 찾기 (API, 모바일 버전)
프록시 사용 시 운영 보안(OPSEC)
프록시를 사용하더라도 개인 정보나 위치를 노출할 수 있는 실수를 할 수 있습니다. 운영 보안(OPSEC)은 이러한 위험을 최소화하기 위한 일련의 관행입니다.
프록시 사용 시 일반적인 유출:
1. DNS 유출. 프록시를 사용하더라도 DNS 요청이 귀하의 제공자로 직접 전달되어 실제 위치가 드러날 수 있습니다:
# DNS 유출 확인
dig @8.8.8.8 target.com # DNS 요청이 Google DNS로 직접 전달됨
# 해결책: 프록시를 통한 DNS 사용
# proxychains에서: proxy_dns
# Python requests에서: 도메인 대신 IP 사용 또는 DNS over HTTPS 설정
2. WebRTC 유출. 브라우저 도구를 사용할 경우 WebRTC가 실제 IP를 노출할 수 있습니다:
- 브라우저에서 WebRTC를 비활성화하거나 확장 프로그램 사용 (WebRTC Leak Shield)
- Playwright/Puppeteer 사용 시 — 권한을 통해 WebRTC 차단
3. 시간대 및 지역 설정 유출. 귀하의 시간대 및 언어 설정이 프록시 IP와 일치하지 않을 수 있습니다:
# Playwright에서 시간대 올바르게 설정
context = browser.new_context(
proxy={'server': 'socks5://us-proxy.com:1080'},
locale='en-US', # US 프록시에 해당
timezone_id='America/New_York', # 미국 시간대
geolocation={'latitude': 40.7128, 'longitude': -74.0060} # 뉴욕 좌표
)
4. 쿠키 및 세션 유출. 서로 다른 프록시에서 동일한 쿠키를 사용하지 마세요 — 이는 요청을 연결합니다:
- 각 프록시 = 새로운 세션과 깨끗한 쿠키
- 필요하지 않으면 서로 다른 IP로 동일한 계정에 로그인하지 마세요
- 브라우저 컨테이너 또는 별도의 프로필 사용
5. 핑거프린팅 일관성. 브라우저의 핑거프린트는 프록시 IP와 일치해야 합니다:
- 미국 프록시 + 러시아어 브라우저 = 의심스러움
- 모바일 프록시 + 데스크톱 User-Agent = 불일치
- 일관된 핑거프린트를 생성하는 도구 사용
펜테스터를 위한 OPSEC 권장 사항:
- 펜테스트를 위한 전용 VM 사용 — 기본 시스템과 격리하세요
- 로그 및 아티팩트 — 암호화된 디스크에 보관하고 프로젝트 완료 후 삭제하세요
- 프록시 분리 — 서로 다른 프로젝트에 대해 서로 다른 프록시 풀 사용
- 합법적인 트래픽과 불법적인 트래픽을 동일한 프록시를 통해 혼합하지 마세요
- 프록시의 유출 여부 확인 — 정기적으로 ipleak.net, browserleaks.com을 통해 테스트하세요
- 문서화 — 고객에게 보고할 프록시 사용 기록을 유지하세요 (어떤 IP, 언제)
법적 측면. 합법적인 펜테스트를 수행할 때는 다음이 중요합니다:
- 고객으로부터 서면 허가(작업 범위)를 받으세요
- 합의된 범위를 초과하지 마세요 — 허용된 시스템만 테스트하세요
- 프록시로 사용하는 IP 주소를 고객에게 화이트리스트에 추가하도록 알리세요
- 테스트하는 시스템이 있는 국가의 법률을 준수하세요
결론
프록시는 현대의 펜테스터와 정보 보안 전문가에게 필수적인 도구입니다. 이들은 실제 IP를 숨기고, 보안 시스템을 우회하며, 다양한 위치에서의 공격을 시뮬레이션하고, 차단을 피하기 위해 부하를 분산시킬 수 있게 합니다. 프록시 유형의 선택은 작업에 따라 다릅니다: 대량 스캔에는 빠른 데이터 센터 프록시가 적합하고, 복잡한 WAF 및 봇 탐지를 우회하기 위해서는 높은 신뢰 점수를 가진 주거용 프록시가 필요합니다.
펜테스트를 위한 프록시 사용 시 주요 사항: 비율 제한을 우회하기 위한 IP 회전의 올바른 설정, proxychains 또는 네이티브 지원을 통한 도구와의 통합, DNS, WebRTC 또는 핑거프린트를 통한 실제 IP 유출 방지를 위한 운영 보안 준수. 기술적 조치(프록시 체인, 안티 탐지 기술, 혼란)와 올바른 OPSEC의 조합은 효과적이고 안전한 테스트를 보장합니다.
윤리적 해킹 작업을 위해서는 고급 보호 시스템을 테스트할 때 주거용 프록시를 사용하고, 대량 스캔 및 속도가 중요한 작업에는 데이터 센터 프록시를 사용하는 것이 좋습니다. 올바른 프록시 선택 및 설정은 테스트의 효율성을 크게 향상시키고 발견 위험을 최소화합니다.