
JA4+는 네트워크 핑거프린팅 표준 모음입니다.
JA4+는 FoxIO에서 개발한 네트워크 핑거프린팅 방법 모음으로, 사용하기 쉽고 공유하기 쉽습니다. 이 방법들은 사람과 기계 모두 읽을 수 있어 더 효과적인 위협 탐지 및 분석을 가능하게 합니다. 이러한 핑거프린트의 사용 사례로는 위협 행위자 스캔, 악성코드 탐지, 세션 하이재킹 방지, 규정 준수 자동화, 위치 추적, DDoS 탐지, 위협 행위자 그룹화, 리버스 셸 탐지 등이 있습니다.
JA4+에 대한 빠른 설명과 분석 중 참고 자료로 사용하려면 다음을 참조하세요:
JA4+ 치트 시트
자세한 내용은 JA4+의 작동 방식, 작동 이유, 그리고 이를 통해 탐지/방지할 수 있는 예시에 대한 블로그를 읽어보세요:
JA4+ 네트워크 핑거프린팅 (JA4/S/H/L/X/SSH)
JA4T: TCP 핑거프린팅 (JA4T/TS/TScan)
Surfshark 및 NordVPN을 JA4T로 조사하기 (JA4T)
JA4+를 좋아하신다면 티셔츠나 후디를 구매해보세요:
JA4+ 셔츠, 후디, 스티커
전체 이름이나 약어는 상호 교환 가능하게 사용할 수 있습니다. 추가 JA4+ 방법이 개발 중입니다...
JA4+ 핑거프린트를 읽는 방법을 이해하려면 기술 세부 사항을 참조하세요.
이 저장소는 다음 언어로 JA4+를 포함하고 있습니다:
더 많은 도구가 곧 발표될 예정입니다...
더 많은 예시는 ja4plus-mapping.csv를 참조하세요.
전체 데이터베이스는 ja4db.com에서 확인하세요.
JA4 바이너리는 이 스위트의 Rust 구현으로 빌드됩니다. 전체 기능을 사용하려면 tshark(버전 4.0.6 이상)가 필요합니다. 최신 JA4 바이너리는 Releases 페이지에서 다운로드하세요. Rust 구현의 릴리스 버전은 시맨틱 버저닝을 따르며 vX.Y.Z 형식으로 표시됩니다. Wireshark 플러그인 릴리스와는 다릅니다.
릴리스 에셋은 구성 요소와 플랫폼에 따라 이름이 지정됩니다:
ja4-vX.Y.Z-<architecture>-<platform>.tar.gz (예: ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz)ja4-python-vX.Y.Z.tar.gz (전체 python/ 디렉토리 포함)ja4.so.linux, ja4.so.macos, ja4.dll (wireshark-vX.Y.Z와 같은 이름의 릴리스에 첨부됨)시스템 및 구성 요소에 적합한 파일을 선택하세요.
패키지 관리자를 사용하여 설치합니다 (패키지 이름 tshark 또는 wireshark-cli는 배포판에 따라 다릅니다). 예를 들어 Ubuntu에서는:
sudo apt install tshark
tshark 포함).tshark를 PATH에 추가합니다:
sudo ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
tshark.exe 포함).tshark.exe의 위치를 찾습니다 (일반적으로 C:\Program Files\Wireshark\tshark.exe).tshark.exe가 포함된 폴더를 시스템 PATH에 추가합니다:
tshark와 JA4+ 바이너리를 사용할 수 있게 되면, 다음 명령어로 JA4+를 실행합니다:
./ja4 [옵션] [pcap]
ja4 [옵션] [pcap]
JA4+ 실행 및 고급 구성에 대한 자세한 내용은 Rust 구현 README를 참조하세요. 이 문서에는 기능, 사용 시나리오 및 사용자 정의 옵션에 대한 정보가 포함되어 있습니다.
공식 JA4+ 핑거프린트, 관련 애플리케이션 및 권장 탐지 로직 데이터베이스는 여기에서 확인할 수 있습니다: ja4db.com
이 데이터베이스는 매우 활발하게 개발 중입니다. 앞으로 몇 달 안에 훨씬 더 많은 핑거프린트 조합과 데이터가 추가될 예정입니다.
빠른 참조를 위해 ja4plus-mapping.csv 샘플도 제공됩니다.
JA4+는 GitHub Actions를 사용하여 Rust, Python, Wireshark 및 Zeek 구성 요소의 릴리스를 자동화합니다. 릴리스는 특정 접두사가 있는 태그를 저장소에 푸시하여 생성됩니다. 단, Zeek는 순수 시맨틱 버전(semver) 태그를 사용합니다. 릴리스 에셋의 이름은 다음과 같습니다:
ja4-vX.Y.Z-<architecture>-<platform>.tar.gzja4-python-vX.Y.Z.tar.gzja4.so.linux, ja4.so.macos, ja4.dll (wireshark-vX.Y.Z와 같은 이름의 릴리스에 첨부됨)다음 워크플로우를 사용할 수 있습니다:
Rust 릴리스:
rust-로 시작하는 태그(예: rust-v0.18.5)를 푸시하면 Rust 바이너리 릴리스가 트리거됩니다. 워크플로우가 자동으로 릴리스 에셋을 빌드하고 업로드합니다.
Python 릴리스:
python-로 시작하는 태그(예: python-v0.1.0)를 푸시하면 Python 구현 릴리스가 트리거됩니다. 워크플로우가 python/ 디렉토리의 tarball을 생성하여 릴리스 에셋으로 게시합니다.
Wireshark 플러그인 릴리스:
wireshark-로 시작하는 태그(예: wireshark-v0.1.1)를 푸시하면 지원되는 모든 플랫폼에 대한 Wireshark 플러그인 바이너리 릴리스가 트리거됩니다.
Zeek 릴리스:
접두사 없이 순수 시맨틱 버전 태그(예: v1.2.3)를 푸시하면 Zeek 릴리스가 트리거됩니다. 이는 packages.zeek.org에 자동으로 릴리스를 생성합니다.
변경 사항이 main 브랜치에 병합되었는지 확인합니다.
릴리스하려는 구성 요소에 대한 태그를 생성하고 푸시합니다:
rust-v0.18.5, python-v0.1.0, wireshark-v0.1.1).v1.2.3).예시:
git tag v1.2.3
git push origin v1.2.3
(Zeek의 경우)
또는 Rust의 경우:
git tag rust-v0.18.5
git push origin rust-v0.18.5
해당 GitHub Actions 워크플로우가 실행되어 릴리스 에셋을 자동으로 게시합니다. Zeek의 경우 릴리스가 packages.zeek.org에 표시됩니다.
JA4+는 여러 프로토콜에 대한 간단하면서도 강력한 네트워크 핑거프린트 세트로, 사람과 기계 모두 읽을 수 있어 위협 탐지 및 보안 분석을 개선합니다. 네트워크 핑거프린팅에 익숙하지 않다면, JA3을 공개한 이 블로그, JARM을 공개한 이 블로그, 그리고 Fastly의 TLS 핑거프린팅 현황에 대한 훌륭한 블로그를 읽어보시기를 권장합니다. 이 블로그는 앞서 언급한 방법들의 역사와 문제점을 설명합니다. JA4+는 전담 지원을 제공하며, 업계 변화에 따라 방법을 최신 상태로 유지합니다.
모든 JA4+ 핑거프린트는 a_b_c 형식을 가지며, 핑거프린트를 구성하는 각 섹션을 구분합니다. 이를 통해 ab, ac 또는 c만 사용하여 탐지 및 위협 헌팅이 가능합니다. 예를 들어, 애플리케이션으로 들어오는 쿠키만 분석하려면 JA4H_c만 보면 됩니다. 이 새로운 지역성 보존 형식은 더 깊고 풍부한 분석을 가능하게 하면서도 간단하고 사용하기 쉬우며 확장성을 제공합니다.
예를 들어, GreyNoise는 인터넷 스캐너를 식별하는 인터넷 청취자이며 JA4+를 자사 제품에 구현하고 있습니다. 그들은 단일 TLS 암호를 끊임없이 변경하며 인터넷을 스캔하는 행위자를 발견했습니다. 이는 완전히 다른 엄청난 양의 JA3 핑거프린트를 생성하지만, JA4에서는 JA4 핑거프린트의 b 부분만 변경되고 a와 c 부분은 동일하게 유지됩니다. 따라서 GreyNoise는 JA4_ac 핑거프린트(a+c 결합, b 제외)를 보아 행위자를 추적할 수 있습니다.
JA4+ 방법 및 설명 목록은 현재 방법 및 구현 세부 사항을 참조하세요.
JA4+ 핑거프린트를 읽는 방법을 이해하려면 기술 세부 사항을 참조하세요.
JA4: TLS 클라이언트 핑거프린팅은 JA3과 동일한 오픈소스, BSD 3-Clause 라이선스입니다. FoxIO는 특허 주장이 없으며 JA4 TLS 클라이언트 핑거프린팅에 대한 특허 보호를 추진할 계획이 없습니다. 따라서 현재 JA3을 사용하는 모든 회사나 도구는 지체 없이 JA4로 업그레이드할 수 있습니다.
JA4S, JA4L, JA4LS, JA4H, JA4X, JA4SSH, JA4T, JA4TS, JA4TScan 및 향후 추가될 모든 항목(통칭 JA4+) 은 FoxIO 라이선스 1.1에 따라 라이선스가 부여됩니다. 이 라이선스는 학술 및 내부 비즈니스 목적을 포함한 대부분의 사용 사례에 대해 허용적이지만, 수익화에는 허용적이지 않습니다. 예를 들어, 회사가 내부 보안을 위해 JA4+를 사용하는 것은 허용됩니다. 예를 들어, 벤더가 제품 제공의 일부로 JA4+ 핑거프린팅을 판매하려면 당사에 OEM 라이선스를 요청해야 합니다.
모든 JA4+ 방법은 특허 출원 중입니다.
JA4+는 FoxIO의 상표입니다.
JA4+는 오픈소스 도구에 구현될 수 있으며 실제로 구현되고 있습니다. 자세한 내용은 라이선스 FAQ를 참조하세요.
이 라이선스는 JA4+를 개방적이고 즉시 사용 가능한 방식으로 세계에 제공하면서도, 지속적인 지원, 새로운 방법 연구 및 JA4+ 데이터베이스 개발 자금을 조달할 수 있는 방법을 제공합니다. 우리는 모든 사람이 JA4+를 활용할 수 있기를 원하며, 벤더 및 오픈소스 프로젝트와 협력하여 이를 실현할 수 있도록 기쁘게 생각합니다.
Q: 암호를 정렬하는 이유는 무엇인가요? 순서가 중요하지 않나요?
A: 중요하지만, 연구 결과 애플리케이션과 라이브러리는 고유한 순서보다는 고유한 암호 목록을 선택하는 경우가 더 많다는 것을 발견했습니다. 또한 이는 "암호 스텐팅(cipher stunting)"이라는 JA3 탐지를 방지하기 위해 암호 순서를 무작위화하는 전술의 효과를 줄입니다.
Q: 확장을 정렬하는 이유는 무엇인가요?
A: 2023년 초, Google은 Chromium 브라우저를 업데이트하여 확장 순서를 무작위화했습니다. 암호 스텐팅과 유사하게, 이는 JA3 탐지를 방지하고 "TLS 생태계를 변화에 더 강건하게 만들기" 위한 전술이었습니다. Google은 서버 구현자들이 Chrome 핑거프린트가 절대 변하지 않을 것이라고 가정하고 그에 따라 로직을 구축하여 Google이 Chrome을 업데이트할 때 문제가 발생할 것을 우려했습니다.
그러므로 분명히 말씀드리자면, JA4 핑거프린트는 애플리케이션 TLS 라이브러리가 업데이트됨에 따라 변경됩니다(약 1년에 한 번). 애플리케이션이 업데이트되는 환경에서 핑거프린트가 일정하게 유지될 것이라고 가정하지 마십시오. 어쨌든 확장을 정렬하면 이 문제를 해결할 수 있으며, 서명 알고리즘을 추가하면 고유성이 유지됩니다.
Q: TLS 1.3이 TLS 클라이언트 핑거프린팅을 더 어렵게 만들지 않나요?
A: 아니요, 오히려 더 쉽게 만듭니다! TLS 1.3부터 클라이언트는 훨씬 더 많은 확장 세트를 가지게 되었으며, TLS 1.3이 소수의 암호만 지원하더라도 브라우저와 애플리케이션은 여전히 훨씬 더 많은 암호를 지원합니다.
John Althouse, 다음 분들의 피드백을 받았습니다:
Josh Atkins
Jeff Atkinson
Joshua Alexander
W.
Joe Martin
Ben Higgins
Andrew Morris
Chris Ueland
Ben Schofield
Matthias Vallentin
Valeriy Vorotyntsev
Timothy Noel
Gary Lipsky
Michael Barbine
그리고 GreyNoise, Hunt, Google, ExtraHop, F5, Driftnet 등에서 일하는 엔지니어들.
라이선스 및 문의 사항은 [email protected]로 John Althouse에게 연락하세요.
JA4 및 JA4+는 FoxIO, Inc.의 상표입니다.
저작권 (c) 2025, FoxIO
| 전체 이름 | 약어 | 설명 |
|---|
| JA4 | JA4 | TLS 클라이언트 핑거프린팅 |
| JA4Server | JA4S | TLS 서버 응답 / 세션 핑거프린팅 |
| JA4HTTP | JA4H | HTTP 클라이언트 핑거프린팅 |
| JA4Latency | JA4L | 클라이언트-서버 지연 시간 측정 / 빛의 거리 |
| JA4LatencyServer | JA4LS | 서버-클라이언트 지연 시간 측정 / 빛의 거리 |
| JA4X509 | JA4X | X509 TLS 인증서 핑거프린팅 |
| JA4SSH | JA4SSH | SSH 트래픽 핑거프린팅 |
| JA4TCP | JA4T | TCP 클라이언트 핑거프린팅 |
| JA4TCPServer | JA4TS | TCP 서버 응답 핑거프린팅 |
| JA4TCPScan | JA4TScan | 액티브 TCP 핑거프린트 스캐너 |
| JA4DHCP | JA4D | DHCP 핑거프린팅 |
| JA4DHCPv6 | JA4D6 | DHCPv6 핑거프린팅 |
| 도구/벤더 | JA4+ 지원 |
|---|
| Wireshark | JA4+ |
| Zeek | JA4+ |
| Arkime | JA4+ |
| Suricata | JA4+ (개발 중) |
| GreyNoise | JA4+ |
| Hunt | JA4+ |
| Driftnet | JA4+ |
| GoLang | JA4X |
| nzyme | JA4+ (개발 중) |
| Netresec의 CapLoader | JA4+ (개발 중) |
| Netresec의 NetworkMiner | JA4+ (개발 중) |
| NGINX | JA4+ |
| F5 BIG-IP | JA4+ |
| nfdump | JA4+ |
| ntop의 ntopng | JA4+ |
| ntop의 nDPI | JA4 |
| Team Cymru | JA4+ |
| NetQuest | JA4+ |
| Censys | JA4+ |
| Exploit.org의 Netryx | JA4 및 JA4H |
| Cloudflare | JA4 |
| Fastly | JA4+ (요청 시) |
| MISP | JA4+ |
| OCSF | JA4+ |
| Vercel | JA4 |
| Seika | JA4+ |
| VirusTotal | JA4 |
| AWS CloudFront | JA4 |
| ELLIO | JA4+ |
| Webscout | JA4+ |
| Rama | JA4 및 JA4H |
| Vectra | JA4+ |
| AWS WAF | JA4 |
| Tacticly | JA4+ |
| Palo Alto Networks | JA4+ |
| ngrok | JA4 |
| Vertex Synapse | JA4 및 JA4S |
| Google Cloud Armor | JA4 |
| Fortinet | JA4 |
| AppOmni | JA4+ |
| IntelliGenesis | JA4+ |
| HAProxy | JA4 및 JA4H 플러그인 (OXL 제공) |
| SentinelOne | JA4 |
| Akamai | JA4 |
| Alibaba Cloud | JA4 |
| Huawei Cloud | JA4 |
| Google Cloud LBs | JA4 |
| eSentire | JA4+ |
| Microsoft Azure Front Door CDN | JA4 |
| Synapse (Gen0Sec 제공) | JA4X |
| Zscaler | JA4 |
| ExtraHop | JA4+ |
| Validin | JA4+ |
| Auth0 | JA4 |
| Security Onion | JA4+ |
| 애플리케이션 | JA4+ 핑거프린트 |
|---|
| Chrome | JA4=t13d1516h2_8daaf6152771_02713d6af862 (TCP) JA4=q13d0312h3_55b375c5d22e_06cda9e17597 (QUIC) JA4=t13d1517h2_8daaf6152771_b0da82dd1658 (사전 공유 키) JA4=t13d1517h2_8daaf6152771_b1ff8ab2d16f (키 없음) |
| IcedID 악성코드 드로퍼 | JA4H=ge11cn020000_9ed1ff1f7b03_cd8dafe26982 |
| IcedID 악성코드 | JA4=t13d201100_2b729b4bf6f3_9e7b989ebec8 JA4S=t120300_c030_5e2616a54c73 |
| Sliver 악성코드 | JA4=t13d190900_9dc949149365_97f8aa674fd9 JA4S=t130200_1301_a56c5b993250 JA4X=000000000000_4f24da86fad6_bf0f0589fc03 JA4X=000000000000_7c32fa18c13e_bf0f0589fc03 |
| Cobalt Strike | JA4H=ge11cn060000_4e59edc1297a_4da5efaf0cbd JA4X=2166164053c1_2166164053c1_30d204a01551 |
| SoftEther VPN | JA4=t13d880900_fcb5b95cb75a_b0d3b4ac2a14 (클라이언트) JA4S=t130200_1302_a56c5b993250 JA4X=d55f458d5a6c_d55f458d5a6c_0fc8c171b6ae |
| Qakbot | JA4X=2bab15409345_af684594efb4_000000000000 |
| Pikabot | JA4X=1a59268f55e5_1a59268f55e5_795797892f9c |
| Darkgate | JA4H=po10nn060000_cdb958d032b0 |
| LummaC2 | JA4H=po11nn050000_d253db9d024b |
| Evilginx | JA4=t13d191000_9dc949149365_e7c285222651 |
| 리버스 SSH 셸 | JA4SSH=c76s76_c71s59_c0s70 |
| Windows 11 | JA4T=64240_2-1-3-1-1-4_1460_8 |
| Epson 프린터 | JA4TScan=28960_2-4-8-1-3_1460_3_1-4-8-16 |
| Windows 11 | JA4D=disco0000in_61-12-60-55_1-3-6-15-31-33-43-44-46-47-119-121-249-252 |
| Sony 리시버 | JA4D6=solct0010nn_8-1-3-6_24-23 |