Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
espoofer — SPF/DKIM/DMARC를 우회하고 DKIM 서명을 위조하는 것을 목표로 하는 이메일 스푸핑 테스트 도구입니다.🍻 | Kitploit
도구/GitHubGitHub/chenjj/espoofer
Phishing ToolsVulnerability AnalysisPenetration TestingPapers & ResearchLearning & EducationEmail Security
GitHubchenjj/espoofer

espoofer

SPF/DKIM/DMARC를 우회하고 DKIM 서명을 위조하는 것을 목표로 하는 이메일 스푸핑 테스트 도구입니다.🍻

저장소 보기
1.7k2814년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

espoofer

espoofer는 이메일 시스템에서 SPF, DKIM 및 DMARC 인증을 우회하기 위한 오픈 소스 테스트 도구입니다. 메일 서버 관리자와 침투 테스터가 대상 이메일 서버와 클라이언트가 이메일 스푸핑 공격에 취약한지 또는 스푸핑 이메일을 보내는 데 악용될 수 있는지 확인하는 데 도움을 줍니다.


그림 1. Gmail에 대한 스푸핑 공격 사례 (수정됨, 데모 비디오)

이 도구를 만든 이유는?

이메일 스푸핑은 개인과 조직 모두에게 큰 위협입니다 (Yahoo 침해 사고, John podesta 사건). 이 문제를 해결하기 위해 현대 이메일 서비스와 웹사이트는 SPF, DKIM, DMARC와 같은 인증 프로토콜을 사용하여 이메일 위조를 방지합니다.

최신 연구에 따르면 이러한 프로토콜의 구현에는 여러 보안 문제가 있으며, 이는 SPF/DKIM/DMARC 보호를 우회하는 데 악용될 수 있습니다. 그림 1은 Gmail에서 DKIM과 DMARC를 우회하는 스푸핑 공격 중 하나를 보여줍니다. 자세한 기술 내용은 Black Hat USA 2020 발표 ( 발표 영상 포함) 또는 USENIX security 2020 논문을 참조하세요.

  • Black Hat USA 2020 슬라이드 (PDF): You have No Idea Who Sent that Email: 18 Attacks on Email Sender Authentication
  • USENIX security 2020 논문 (PDF): Composition Kills: A Case Study of Email Sender Authentication
    • Distinguished Paper Award Winner

이 저장소에서는 발견된 모든 테스트 케이스를 요약하고 이 도구에 통합하여 관리자와 보안 실무자가 이러한 보안 문제를 신속하게 식별하고 찾을 수 있도록 지원합니다.

과학 연구를 하는 경우 다음 인용을 사용해 주세요 (클릭하세요).

Latex 버전:

root@kitploit:~
@inproceedings{chen-email,
author = {Jianjun Chen and Vern Paxson and Jian Jiang},
title = {Composition Kills: A Case Study of Email Sender Authentication},
booktitle = {29th {USENIX} Security Symposium ({USENIX} Security 20)},
year = {2020},
isbn = {978-1-939133-17-5},
pages = {2183--2199},
url = {https://www.usenix.org/conference/usenixsecurity20/presentation/chen-jianjun},
publisher = {{USENIX} Association},
month = aug,
}

Word 버전:

Jianjun Chen, Vern Paxson, and Jian Jiang. "Composition kills: A case study of email sender authentication." In 29th USENIX Security Symposium (USENIX Security 20), pp. 2183-2199. 2020.

설치

  • 이 도구 다운로드
root@kitploit:~
git clone https://github.com/chenjj/espoofer
  • 종속성 설치
root@kitploit:~
sudo pip3 install -r requirements.txt

Python 버전: Python 3 (>=3.7).

사용법

espoofer는 세 가지 작업 모드가 있습니다: 서버('s', 기본 모드), 클라이언트('c'), 수동('m'). 서버 모드에서 espoofer는 메일 서버처럼 작동하여 수신 서비스의 유효성 검사를 테스트합니다. 클라이언트 모드에서 espoofer는 이메일 클라이언트처럼 작동하여 발신 서비스의 유효성 검사를 테스트합니다. 수동 모드는 디버그 목적으로 사용됩니다.


그림 2. 세 가지 유형의 공격자와 그들의 작업 모드

서버 모드

서버 모드에서 espoofer를 실행하려면 다음이 필요합니다: 1) ISP에서 발신 포트 25가 차단되지 않은 IP 주소(1.2.3.4), 2) 도메인(attack.com).

  1. 도메인 구성
  • attack.com에 대한 DKIM 공개 키 설정
root@kitploit:~
selector._domainkey.attacker.com TXT  "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNjwdrmp/gcbKLaGQfRZk+LJ6XOWuQXkAOa/lI1En4t4sLuWiKiL6hACqMrsKQ8XfgqN76mmx4CHWn2VqVewFh7QTvshGLywWwrAJZdQ4KTlfR/2EwAlrItndijOfr2tpZRgP0nTY6saktkhQdwrk3U0SZmG7U8L9IPj7ZwPKGvQIDAQAB"
  • attack.com에 대한 SPF 레코드 설정
root@kitploit:~
attack.com TXT "v=spf1 ip4:1.2.3.4 +all"
  1. config.py에서 도구 구성
root@kitploit:~
config ={
	"attacker_site": b"attack.com", # attack.com
	"legitimate_site_address": b"[email protected]", # legitimate.com
	"victim_address": b"[email protected]", # [email protected]
	"case_id": b"server_a1", # server_a1
}

-l 옵션을 사용하여 모든 테스트 케이스의 case_id를 나열할 수 있습니다:

root@kitploit:~
python3 espoofer.py -l
  1. 스푸핑 이메일을 보내기 위해 도구 실행
root@kitploit:~
python3 espoofer.py

config.py에서 case_id를 변경하거나 명령줄에서 -id 옵션을 사용하여 다른 사례를 테스트할 수 있습니다:

root@kitploit:~
python3 espoofer.py -id server_a1

클라이언트 모드

클라이언트 모드에서 espoofer를 실행하려면 대상 이메일 서비스에 계정이 있어야 합니다. 이 공격은 일부 이메일 서비스가 로컬 MUA에서 수신된 이메일에 대해 충분한 검증을 수행하지 못하는 점을 악용합니다. 예를 들어, [email protected]이 [email protected]을 사칭하려고 시도합니다.

  1. config.py에서 도구 구성
root@kitploit:~
config ={
	"legitimate_site_address": b"[email protected]",  
	"victim_address": b"[email protected]", 
	"case_id": b"client_a1",

	"client_mode": {
		"sending_server": ("smtp.gmail.com", 587),  # SMTP 발신 서버 IP 및 포트
		"username": b"[email protected]", # 계정 사용자 이름 및 비밀번호
		"password": b"your_passward_here",
	},
}

-l 옵션을 사용하여 모든 테스트 케이스의 case_id를 나열할 수 있습니다:

root@kitploit:~
python3 espoofer.py -l

참고: sending_server는 SMTP 발신 서버 주소여야 하며, 수신 서버 주소가 아닙니다.

  1. 스푸핑 이메일을 보내기 위해 도구 실행
root@kitploit:~
python3 espoofer.py -m c

config.py에서 case_id를 변경하고 다시 실행하거나, 명령줄에서 -id 옵션을 사용할 수 있습니다:

root@kitploit:~
python3 espoofer.py -m c -id client_a1

수동 모드

다음은 수동 모드의 예입니다:

root@kitploit:~
python3 espoofer.py -m m -helo attack.com -mfrom <[email protected]> -rcptto <[email protected]> -data raw_msg_here -ip 127.0.0.1 -port 25

스크린샷

  1. 테스트 케이스 개요.

이 도구로 발견된 버그

  • Gmail.com DMARC 우회 데모 비디오, https://youtu.be/xuKZpT0rsd0
  • Outlook.com DMARC 우회 비디오, https://youtu.be/IsWgAEbPaK0
  • Yahoo.com DMARC 우회 비디오, https://youtu.be/DRepfStOruE
  • Protonmail.com DMARC 우회 비디오, https://youtu.be/bh4_SoPniMA
  • CVE-2020-12272, OpenDMARC 우회 버그 보고, https://sourceforge.net/p/opendmarc/tickets/237/
  • CVE-2019-20790, OpenDMARC 및 pypolicyd-spf 우회 버그 보고, https://sourceforge.net/p/opendmarc/tickets/235/
  • Mail.ru DMARC 우회 버그 보고서(HackerOne), https://hackerone.com/reports/731878

여기에 버그 보고서를 등록하려면 풀 리퀘스트를 보내주세요.

Q&A

  1. 이메일이 DMARC 인증을 성공적으로 우회했는지 어떻게 알 수 있나요?

원시 메시지 헤더의 Authentication-results 헤더에서 확인할 수 있습니다. 헤더에 dmarc=pass가 표시되면 이메일이 DMARC 인증을 통과한 것입니다. 몇 가지 데모 비디오는 여기에서 확인할 수 있습니다.

  1. 이메일 전송이 실패하는 이유는 무엇인가요?

이메일 전송 실패에는 몇 가지 가능한 이유가 있습니다: 1) ISP가 스팸 방지를 위해 발신 포트 25를 차단하는 경우, ISP에 허가를 요청해야 합니다; 2) IP 주소가 대상 이메일 서비스의 스팸 목록에 있는 경우, 많은 경우 https://www.spamhaus.org/lookup/ 에서 문제를 해결할 수 있습니다; 3) 일부 이메일 서비스는 발신 IP에 PTR 레코드가 있는지 확인하므로, 이 검사를 통과하기 위해 PTR 레코드를 설정해야 할 수도 있습니다; 4) 이메일이 대상 이메일 서비스의 형식 검증을 통과하지 못하는 경우, 다른 테스트 케이스를 시도해 볼 수 있습니다.

  1. 이메일이 스팸 폴더로 가는 이유는 무엇인가요? 이를 방지할 방법이 있나요?

현재 espoofer는 SPF/DKIM/DMARC 인증 우회에 초점을 맞추고 있으며 스팸 필터 우회를 목표로 하지 않습니다. 하지만 신뢰할 수 있는 발신 IP 주소, 도메인, 무해한 메시지 내용을 사용하여 스팸 필터를 우회할 수 있습니다.

  1. 이메일을 성공적으로 보냈지만 받은 편지함이나 스팸 폴더에 표시되지 않는 이유는 무엇인가요?

이전 경험에 따르면, 일부 이메일 서비스는 의심스러운 이메일을 조용히 필터링합니다.

  1. server_a5/a6를 테스트할 때 도메인에 "("와 같은 특수 문자를 설정할 수 없는 이유는 무엇인가요?

일부 DNS 호스팅 서비스는 특수 문자 설정에 제한이 있으므로, 타사 DNS 호스팅 서비스를 사용하는 대신 자체 권한 있는 DNS 서버를 설정해야 합니다. 이슈를 참조하세요.

크레딧

더 많은 테스트 케이스를 추가해 주세요.

도구 다운로드