외부 IP주소 평판검사 정보조회 수집 및 불량/악성 대응 활용 (TI 연계)
IP 평판 정보를 Redis와 같은 NoSQL 데이터베이스에 저장하여 TTL(대략 1주일) 동안 유지하면서, 이를 활용하는 방법입니다. 이를 통해 악의적인 IP 주소를 식별하고 차단하거나 보안 이벤트를 모니터링하는 데 활용할 수 있습니다.
주요 API 소개 및 활용
1. AbuseIPDB
- 기능: IP 평판 점수, 악용 기록, 신고 기능
- 활용 사례: 신고된 악성 IP 주소를 확인하고 블랙리스트에 추가
2. IPQualityScore
- 기능: IP 평판 점수, 프록시/VPN 탐지, 피싱/스팸 탐지
- 활용 사례: 의심스러운 IP를 탐지하고 사용자 세션을 모니터링
3. VirusTotal
- 기능: 멀웨어, 피싱 URL 검사, IP 평판 정보
- 활용 사례: 멀웨어와 피싱 URL을 사전에 탐지하고 차단
4. Talos Intelligence
- 기능: IP 평판 점수, 도메인 및 이메일 평판
- 활용 사례: 도메인 평판 정보와 함께 IP 평판 정보를 종합하여 보안 정책 수립
5. Scamalytics
- 기능: IP 평판 점수, 스캠 탐지
- 활용 사례: 스캠 활동이 의심되는 IP를 모니터링하고 차단
6. MaxMind
- 기능: 지리적 위치 정보, VPN/프록시 탐지
- 활용 사례: 사용자의 지리적 위치를 기반으로 접근 제어
7. URLscan.io
- 기능: URL 스캔, 악성 사이트 탐지
- 활용 사례: URL 스캔을 통해 피싱 사이트와 악성 URL을 탐지
8. IPinfo.io
- 기능: 지리적 위치 정보, ISP 정보, IP 평판
- 활용 사례: IP 주소의 지리적 위치 및 ISP 정보를 통해 의심스러운 활동 탐지
구현 방법
- API 키 확보: 위의 서비스들에 가입하고 API 키를 발급받습니다.
- Redis 설치 및 설정
sudo apt-get update sudo apt-get install redis-server sudo systemctl enable redis-server sudo systemctl start redis-server
- Python 코드 예제
import redis import requests import json import time # Redis 설정 redis_client = redis.Redis(host='localhost', port=6379, db=0) # API 키 설정 API_KEYS = { 'abuseipdb': 'YOUR_ABUSEIPDB_API_KEY', 'ipqualityscore': 'YOUR_IPQUALITYSCORE_API_KEY', 'virustotal': 'YOUR_VIRUSTOTAL_API_KEY', 'scamalytics': 'YOUR_SCAMALYTICS_API_KEY', 'urlscan': 'YOUR_URLSCAN_API_KEY', 'ipinfo': 'YOUR_IPINFO_API_KEY' } # HTTP 요청 처리 함수 (에러 처리 포함) def make_request(url, headers=None): try: response = requests.get(url, headers=headers) response.raise_for_status() return response.json() except requests.exceptions.RequestException as e: print(f"HTTP 요청 에러: {e}") return None # IP 평판 정보 조회 함수 def get_ip_reputation(ip): reputation_data = {} # AbuseIPDB 조회 abuseipdb_url = f'https://api.abuseipdb.com/api/v2/check?ipAddress={ip}&maxAgeInDays=90' abuseipdb_headers = {'Key': API_KEYS['abuseipdb'], 'Accept': 'application/json'} reputation_data['abuseipdb'] = make_request(abuseipdb_url, abuseipdb_headers) # IPQualityScore 조회 ipqualityscore_url = f'https://ipqualityscore.com/api/json/ip/{API_KEYS["ipqualityscore"]}/{ip}' reputation_data['ipqualityscore'] = make_request(ipqualityscore_url) # VirusTotal 조회 virustotal_url = f'https://www.virustotal.com/api/v3/ip_addresses/{ip}' virustotal_headers = {'x-apikey': API_KEYS['virustotal']} reputation_data['virustotal'] = make_request(virustotal_url, virustotal_headers) # Scamalytics 조회 scamalytics_url = f'https://scamalytics.com/ip/{ip}/json' reputation_data['scamalytics'] = make_request(scamalytics_url) # URLscan.io 조회 urlscan_url = f'https://urlscan.io/api/v1/search/?q=ip:{ip}' reputation_data['urlscan'] = make_request(urlscan_url) # IPinfo.io 조회 ipinfo_url = f'https://ipinfo.io/{ip}/json?token={API_KEYS["ipinfo"]}' reputation_data['ipinfo'] = make_request(ipinfo_url) return reputation_data # Redis에 데이터 저장 함수 def save_to_redis(ip, data, ttl=7*24*60*60): try: redis_client.setex(ip, ttl, json.dumps(data)) print(f'IP 평판 정보 저장 완료: {ip}') except redis.exceptions.RedisError as e: print(f"Redis 저장 에러: {e}") # IP 주소 예제 if __name__ == '__main__': ip_address = '8.8.8.8' # IP 평판 정보 가져오기 reputation_data = get_ip_reputation(ip_address) # Redis에 저장 (TTL: 1주일) if reputation_data: save_to_redis(ip_address, reputation_data)
부연설명
- API 키 설정: 각 서비스의 API 키를 환경 변수 또는 별도의 설정 파일에 저장합니다.
- IP 평판 정보 조회:
get_ip_reputation
함수는 각 API를 호출하여 IP 평판 정보를 수집합니다. - Redis에 저장:
setex
함수를 사용하여 TTL(1주일)을 설정하여 Redis에 평판 정보를 저장합니다. - 결과 확인:
print
문을 통해 IP 평판 정보가 제대로 저장되었는지 확인합니다.
이러한 방식으로 여러 API의 평판 정보를 수집하여 Redis에 저장하고, TTL을 설정하여 일정 기간 동안만 유지함으로써 효율적으로 관리할 수 있습니다. 이를 통해 보안 이벤트를 모니터링하고 의심스러운 IP를 빠르게 차단하는 데 활용할 수 있습니다.
SpiderFoot는 오픈 소스 인텔리전스(OSINT)를 수행하는 강력한 도구로, 다양한 소스에서 데이터를 수집하고 이를 분석하는 데 사용됩니다. SpiderFoot는 웹 애플리케이션으로도, CLI(Command Line Interface)로도 사용할 수 있으며, 모듈화된 방식으로 다양한 데이터를 수집할 수 있습니다. 아래는 SpiderFoot를 사용하여 OSINT를 수행하는 방법입니다.
1. SpiderFoot 설치
SpiderFoot는 Python으로 작성되어 있으며, 다음과 같은 방법으로 설치할 수 있습니다.
- Linux/Unix
git clone https://github.com/smicallef/spiderfoot.git cd spiderfoot pip3 install -r requirements.txt python3 ./sf.py
- Docker를 사용한 설치
docker pull smicallef/spiderfoot docker run -it -p 5001:5001 smicallef/spiderfoot
Docker를 사용하면 설치 과정이 단순해지고, 의존성 문제를 해결하는 데 유리합니다.
2. SpiderFoot 설정
설치 후 SpiderFoot 웹 인터페이스에 접근하려면 브라우저에서 http://localhost:5001
로 접속할 수 있습니다. 여기서 SpiderFoot의 다양한 설정을 조정할 수 있습니다.
3. OSINT 작업 수행
OSINT 작업을 수행하기 위해서는 먼저 'Scan'을 설정해야 합니다.
- 새 스캔 생성
- Scan Name: 스캔 이름을 지정합니다.
- Target: 분석할 대상(도메인, IP 주소, 이메일 주소 등)을 입력합니다.
- Modules: 사용할 모듈을 선택합니다. SpiderFoot는 200개 이상의 모듈을 제공하며, 수집하려는 정보에 따라 모듈을 선택할 수 있습니다.
- Options: 각 모듈에 대한 옵션을 설정할 수 있습니다. 예를 들어, 특정 API 키를 입력하거나, 수집할 데이터의 범위를 지정할 수 있습니다.
- 스캔 시작
- 모든 설정을 완료한 후 "Start Scan" 버튼을 클릭하여 스캔을 시작합니다. SpiderFoot는 선택한 모듈에 따라 대상에 대한 다양한 데이터를 수집하기 시작합니다.
4. 스캔 결과 분석
스캔이 완료되면, 결과를 다양한 형태로 분석할 수 있습니다.
- 시각화: SpiderFoot는 수집된 데이터를 시각화하여 네트워크 그래프 형태로 제공해줍니다.
- 필터링: 특정 키워드나 모듈에 기반한 필터링이 가능합니다.
- 보고서 생성: 결과를 PDF 또는 HTML 형식으로 내보내서 보고서를 생성할 수 있습니다.
5. 활용 사례
SpiderFoot를 사용하여 다양한 정보를 수집할 수 있습니다.
- 도메인 정보: Whois 정보, DNS 레코드, SSL 인증서 정보 등
- 네트워크 정보: IP 주소 관련 정보, 포트 스캔 결과 등
- 이메일 주소: 관련된 데이터 유출 정보, 소셜 미디어 계정 등
- 소셜 미디어 분석: 특정 사용자나 기업의 소셜 미디어 활동 추적
6. 보안 관점에서의 고려사항
SpiderFoot를 사용할 때 몇 가지 보안 점검 포인트가 있습니다.
- 데이터 유출 주의: OSINT는 공개된 데이터를 수집하는 것이지만, 민감한 정보가 수집될 수 있으므로 결과물의 보안에 유의해야 합니다.
- API 키 관리: 일부 모듈은 API 키를 필요로 하며, 이를 안전하게 관리해야 합니다.
- 법적 문제: 특정 정보를 수집하는 과정에서 법적 문제가 발생할 수 있으므로, 대상 정보에 대한 사전 검토가 필요합니다.
7. SpiderFoot를 활용한 보안 점검
SpiderFoot는 다양한 보안 점검에 활용될 수 있습니다. 예를 들어, 기업의 자산(도메인, IP 등)에 대한 공격 표면을 평가하거나, 경쟁사의 활동을 모니터링하는 데 유용합니다. 또한, 데이터 유출 가능성을 사전 탐지하여 대응 방안을 마련하는 데도 활용할 수 있습니다. SpiderFoot는 그 강력한 모듈과 자동화된 분석 기능 덕분에 보안팀에서 OSINT 작업을 효율적으로 수행하는 도구로 자리 잡을 수 있습니다.
일반적인 Threat Intelligence(TI) 운영과 비교했을 때 Redis와 같은 NoSQL 데이터베이스에 IP 평판 정보를 저장하고 활용하는 방법은 몇 가지 주요 차이점과 유사점을 가지고 있습니다.
- 데이터 저장 방식
- 일반 TI 운영: 전용 TI 플랫폼(예: ThreatConnect, Recorded Future 등)을 사용하여 다양한 소스에서 정보를 수집하고, 이를 중앙화된 대시보드에서 관리합니다. 이러한 플랫폼은 종종 구조화된 데이터베이스를 사용하여 복잡한 쿼리와 분석을 지원합니다.
- Redis 기반 운영: Redis와 같은 NoSQL 데이터베이스를 사용하여 IP 평판 정보를 저장하고 관리합니다. Redis는 빠른 읽기/쓰기를 지원하며, TTL 설정을 통해 자동으로 데이터를 만료시킬 수 있습니다. 그러나 고급 분석 기능은 제한적일 수 있습니다.
- 분석 및 시각화 도구
- 일반 TI 운영: 전용 TI 플랫폼은 종종 내장된 분석 및 시각화 도구를 제공하여 실시간으로 위협 정보를 분석하고, 경향을 파악하며, 경고를 생성합니다.
- Redis 기반 운영: Redis는 기본적으로 데이터 저장소로 사용되기 때문에, 추가적인 분석 및 시각화 도구(예: ELK 스택, Grafana 등)를 통합하여 데이터를 분석하고 시각화해야 합니다.
- 통합 및 자동화
- 일반 TI 운영: 전용 TI 플랫폼은 다양한 보안 도구(SIEM, IDS/IPS 등)와 쉽게 통합되며, 자동화된 대응을 지원합니다.
- Redis 기반 운영: Redis는 IP 평판 정보를 저장하는 데 사용되며, 별도의 스크립트나 자동화 도구(n8n, Airflow 등)를 사용하여 보안 도구와 통합해야 합니다.
유사점
- 위협 정보 수집
- 두 방식 모두 여러 소스에서 위협 정보를 수집하여 중앙화된 데이터베이스에 저장합니다. 이 정보는 IP 평판, 악용 기록, 지리적 위치 데이터 등을 포함합니다.
- 데이터 갱신
- 두 방식 모두 주기적으로 데이터를 갱신하여 최신 위협 정보를 유지합니다. Redis의 TTL 기능을 사용하여 데이터의 수명을 관리할 수 있습니다.
- 보안 이벤트 대응
- 두 방식 모두 수집된 위협 정보를 기반으로 보안 이벤트를 모니터링하고, 의심스러운 활동을 탐지하며, 신속하게 대응합니다.
Redis를 사용하여 IP 평판 정보를 저장하고 활용하는 방식은 특정 용도에 최적화된 간단하고 효율적인 방법입니다. 특히 빠른 읽기/쓰기 성능과 TTL 설정을 통한 데이터 관리가 필요할 때 유용합니다. 그러나 고급 분석, 시각화 및 자동화 기능이 필요한 경우에는 전용 TI 플랫폼을 구축하는 것이 더 적합할 수 있습니다.
따라서 Redis 기반의 운영은 일반적인 TI 운영의 일부로 볼 수 있으며, 특정 요구사항에 맞게 최적화된 방법입니다. 필요한 경우 Redis와 전용 TI 플랫폼을 병행하여 사용하는 것도 좋은 접근법이 될 수 있습니다.
Threat Intelligence(TI)에서 다루는 정보들은 매우 다양하며, 이를 통해 보안팀은 더 나은 의사 결정을 내리고 위협에 신속하게 대응할 수 있습니다. TI에서 다루는 주요 정보들은 다음과 같습니다.
1. Indicator of Compromise (IoC)
- 설명: 침해 지표로, 시스템이 이미 침해되었음을 나타내는 증거입니다.
- 예시: 악성 IP 주소, 도메인, 해시 값, 악성 코드 서명 등.
2. Indicator of Attack (IoA)
- 설명: 공격 지표로, 현재 진행 중인 공격 활동을 식별하는 데 사용됩니다.
- 예시: 의심스러운 로그인 시도, 비정상적인 트래픽 패턴, 취약점 공격 등.
3. Tactics, Techniques, and Procedures (TTPs)
- 설명: 공격자가 사용하는 전술, 기술, 절차를 설명합니다.
- 예시: 피싱 메일 전송 방법, 특정 악성 소프트웨어 배포 기술, 공격자의 행동 패턴 등.
4. Threat Actor Profiles
- 설명: 특정 위협 행위자 또는 해커 그룹에 대한 정보입니다.
- 예시: 공격자의 동기, 목표, 사용 도구 및 기술, 과거 공격 이력 등.
5. Vulnerability Information
- 설명: 소프트웨어 또는 시스템의 취약점 정보입니다.
- 예시: CVE 목록, 취약점 상세 설명, 영향 범위 및 패치 방법 등.
6. Malware Analysis Reports
- 설명: 악성 소프트웨어에 대한 상세 분석 보고서입니다.
- 예시: 악성 코드의 동작 방식, 감염 경로, 탐지 방법, 제거 방법 등.
7. Phishing Information
- 설명: 피싱 공격 관련 정보입니다.
- 예시: 피싱 메일 샘플, 피싱 사이트 URL, 피싱 공격 패턴 등.
8. Open Source Intelligence (OSINT)
- 설명: 공개 소스에서 수집된 정보입니다.
- 예시: 소셜 미디어, 뉴스 기사, 블로그, 공개 데이터베이스 등에서 수집된 위협 관련 정보.
9. Threat Intelligence Feeds
- 설명: 실시간으로 업데이트되는 위협 정보 스트림입니다.
- 예시: 상업적 또는 오픈 소스 TI 피드, 최신 IoC, IP 평판 정보 등.
10. Geopolitical Intelligence
- 설명: 지리적 및 정치적 상황이 보안에 미치는 영향에 대한 정보입니다.
- 예시: 특정 지역에서의 사이버 공격 경향, 정치적 사건이 보안에 미치는 영향 등.
11. Behavioral Analysis
- 설명: 사용자 또는 시스템의 비정상적인 행동 패턴 분석입니다.
- 예시: 사용자의 비정상적인 로그인 시도, 시스템의 비정상적인 트래픽 생성 등.
12. Incident Response Reports
- 설명: 과거 보안 사고에 대한 보고서 및 분석입니다.
- 예시: 사고 발생 원인, 대응 방법, 재발 방지 대책 등.
13. Social Engineering Tactics
- 설명: 사회 공학 기법에 대한 정보입니다.
- 예시: 피싱, 스미싱, 비싱, 스피어 피싱 등 다양한 사회 공학 공격 기법.
14. Dark Web Intelligence
- 설명: 다크 웹에서 수집된 위협 정보입니다.
- 예시: 해킹 포럼, 데이터 유출 정보, 사이버 범죄 활동 등.
15. Attack Surface Information
- 설명: 조직의 공격 표면에 대한 정보입니다.
- 예시: 노출된 IP 주소, 인터넷에 공개된 서비스, 취약한 시스템 등.
이러한 정보들은 서로 연관되어 있으며, 종합적으로 분석되어야 효과적인 보안 대응 전략을 수립할 수 있습니다. Threat Intelligence는 다양한 소스에서 이러한 정보를 수집, 분석하고 실시간으로 업데이트하여, 보안팀이 최신 위협에 신속하게 대응할 수 있도록 지원합니다.