
피싱 도메인에 대한 저비용(무료) 위협 인텔리전스 및 대응 도구
Jeopardize 도구는 피싱 도메인에 대한 기본적인 위협 인텔리전스 및 대응 기능을 가능한 한 최소 비용으로 제공하기 위해 개발되었습니다. 등록된 피싱 도메인 후보(타이포스쿼팅, 호모그래프 등)를 탐지하고 분석하여 위험 점수를 할당합니다. 그 후 해당 피싱 사이트의 로그인 폼에 유효한 것처럼 보이는 자격 증명을 전송합니다.
왜? 이런 시나리오를 상상해보세요. 공격자가 피싱 도메인 acmebnak.com(acmebank의 타이포스쿼팅)을 등록하고, 원본 acmebank.com의 로그인 폼을 복사한 후 스폰서 트윗을 통해 이 도메인을 광고합니다. 이 광고와 도메인은 다음 날 피싱으로 신고될 가능성이 높지만, 공격자는 이미 사용자의 자격 증명을 수집한 상태입니다. 이후에 사이트를 내려도 영향을 받은 사용자에게 도움이 되지 않습니다. Jeopardize는 이 문제에 대한 사전 예방적 솔루션을 제공합니다. 유효한 것처럼 보이는 자격 증명으로 피싱 폼을 오염시켜 공격자를 혼란스럽게 만듭니다. 이는 조직이 예방 조치를 취할 시간을 벌어줍니다.
ATTACKER+-----advertises+
| +---------------+
| | |
+--------v-------+ +----------------+ | |
|twitter.com/ads | |acmebnak.com | | 549233/ahs72 +------>FAKE
+----------------+ +----------------+ | |
| | | | | 398273/pass1 +------>FAKE
| AcmeBank +-->+ username: +-------+ |
| Tax Refunds | | password: | | 393823/sm283 +------>LEGIT
| | | | | |
+--------^-------+ +----------------+ | 394837/azerb +------>FAKE
| ^ | |
VICTIM USER+-----clicks-+ |sends | |
|fake creds +---------------+
+
JEOPARDIZE
Jeopardize는 주어진 도메인으로 다양한 단어 조합을 생성합니다. (dnstwist가 도움을 줍니다) 예를 들어, 주어진 도메인이 acmebank.com이면 조합은 acmebnak, acmeban, amcebank 등이 됩니다. 도메인 이름이 짧거나 일반적인 이름(예: aa.com)인 경우 이 도구는 도움이 되지 않습니다. 고유한 이름에 가장 잘 작동합니다.
Jeopardize는 등록된 도메인을 식별하기 위해 두 가지 탐지 방법을 제공합니다:
Brute: Jeopardize는 생성된 단어(acmebnak, amcebank 등)를 모든 TLD(com, net, xyz, live 등)와 결합하고 모든 항목에 대해 whois 쿼리를 실행합니다. 장점: API 키가 필요 없으며 완전 무료입니다. 단점: 시간이 많이 소요됩니다.
Daily: Zonefiles.io API 키를 사용하여 Jeopardize는 지난 24시간 동안 등록된 모든 도메인을 스크래핑하고 생성된 단어(acmebnak, amcebank 등)를 검색합니다. 장점: 빠르며 일일 위협 인텔리전스로 쉽게 사용할 수 있습니다. 단점: Zonefiles.io API 키(Pro 버전)가 필요합니다.
탐지된 도메인은 이미 의심스럽습니다. 그러나 피싱 도메인일 가능성을 높이는 요소가 있습니다. 또한 해당 도메인에 피싱 페이지가 설치되어 있는지 분석하여 이에 대한 조치를 취할 수 있어야 합니다. Jeopardize는 등록된 도메인의 다음 요소를 확인합니다:
피싱 점수가 높고 웹사이트에 로그인 폼이 있는 경우, Jeopardize는 제공된 사용자 이름/비밀번호 목록으로 자동으로 폼을 채웁니다.
탐지된 피싱 도메인의 정보를 XML 파일로 저장합니다. 예:
<domain>
<address>acmebnak.com</address>
<name_servers>ns1.cloudflare.com ns2.cloudflare.com</name_servers>
<mx_servers> </mx_servers>
<date_flag>True</date_flag>
<alexa_flag>False</alexa_flag>
<webserver_flag>True</webserver_flag>
<certificate_flag>False</certificate_flag>
<form_flag>True</form_flag>
<phishing_score>85</phishing_score>
</domain>
Jeopardize는 Python3가 필요하며 macOS, Ubuntu 18.04 및 Debian 기반 Linux 시스템에서 테스트되었습니다. 먼저 저장소를 클론합니다:
git clone https://github.com/utkusen/jeopardize.git
폴더로 이동합니다:
cd jeopardize
필요한 라이브러리를 설치합니다:
pip3 install -r requirements.txt
또한 셀레늄용 chromedriver를 설치해야 합니다(로그인 폼 작성에 필요, 사용하지 않을 경우 설치 불필요).
Ubuntu: sudo apt install chromium-chromedriver 실행
Kali(Debian 기반): pip3 install chromedriver-binary 실행
macOS: brew cask install chromedriver 실행
Zonefiles.io API를 통합하려면, jeopardize.py를 텍스트 편집기로 열고 ZONEFILES_API_KEY = "" 부분을 자신의 키로 교체합니다.
이제 사용할 준비가 되었습니다!
macOS 사용자 참고: macOS는 보안 메커니즘으로 멀티스레딩을 제한하는 것으로 보입니다. 도구를 실행하기 전에 다음 명령을 실행해야 합니다: export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES 이 문제에 대한 자세한 내용은 여기를 확인하세요.
피싱 확인을 위해 --domain 파라미터로 도메인을 제공해야 합니다. 또한 등록된 도메인 탐지 방법으로 --type(brute, daily, incremental)을 제공해야 합니다.
예시 명령어: python3 jeopardize.py --domain facebook.com --type brute
기능 설명: facebook의 단어 조합(fcabook, facebkook 등)을 모든 TLD(com, net, org, xyz)와 결합하고 모든 항목에 대해 whois 쿼리를 실행합니다. 결과는 facebook.com.xml 파일에 저장됩니다. 이 명령은 탐지된 도메인의 로그인 폼을 채우지 않습니다.
예시 명령어: python3 jeopardize.py --domain facebook.com --type daily
기능 설명: Zonefiles.io API를 사용하여 지난 24시간 동안 등록된 모든 도메인을 스크래핑하고 생성된 단어(fcabook, facebkook 등)를 검색합니다.
예시 명령어: python3 jeopardize.py --domain facebook.com --type incremental
기능 설명: 이전에 생성된 XML 파일(facebook.com.xml)을 읽고, 그 안의 도메인을 스크래핑하여 데이터를 업데이트하며 일반 일일 스캔도 수행합니다.
탐지된 피싱 도메인의 로그인 폼을 채우려면 -U 파라미터로 사용자 이름 목록과 -P 파라미터로 비밀번호 목록을 제공합니다.
예시 명령어: python3 jeopardize.py --domain facebook.com --type daily -U user.txt -P pass.txt
상세 모드를 활성화하려면 명령어 끝에 -v 파라미터를 추가합니다.