
ja4 v1.0.1
JA4+는 네트워크 핑거프린팅 표준 모음입니다.
JA4+™ 네트워크 핑거프린팅
JA4+는 FoxIO가 개발한 네트워크 핑거프린팅 방법 모음으로, 사용하기 쉽고 공유하기 쉽습니다. 이러한 방법은 사람과 기계 모두가 읽을 수 있어 더 효과적인 위협 헌팅 및 분석을 지원합니다. 이러한 핑거프린트의 사용 사례로는 위협 행위자 스캐닝, 악성코드 탐지, 세션 하이재킹 방지, 규정 준수 자동화, 위치 추적, DDoS 탐지, 위협 행위자 그룹화, 리버스 셸 탐지 등이 있습니다.
JA4+에 대한 빠른 설명과 분석 중 참고 자료로 사용하려면 다음을 참조하세요:
JA4+ 치트 시트
자세한 내용은 JA4+가 어떻게 작동하는지, 왜 작동하는지, 그리고 이를 통해 무엇을 탐지/방지할 수 있는지에 대한 예시를 다룬 블로그를 읽어보세요:
JA4+ 네트워크 핑거프린팅 (JA4/S/H/L/X/SSH)
JA4T: TCP 핑거프린팅 (JA4T/TS/TScan)
Surfshark 및 NordVPN을 JA4T로 조사하기 (JA4T)
JA4D 및 JA4D6: DHCP 핑거프린팅 (JA4D/6)
JA4+를 좋아하신다면 티셔츠나 후드를 구매해 보세요:
JA4+ 셔츠, 후드, 스티커
목차
현재 방법 및 구현 세부 사항
| 전체 이름 | 짧은 이름 | 설명 |
|---|---|---|
| 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 핑거프린팅 |
| JA4NTP | JA4N | NTP 핑거프린팅 |
| JA4Scan-TLS | JA4Scan-TLS | 활성 TLS 서버 핑거프린트 스캐너 |
| JA4Scan-QUIC | JA4Scan-QUIC | 활성 QUIC 서버 핑거프린트 스캐너 |
전체 이름과 짧은 이름은 서로 바꿔 사용할 수 있습니다. 추가 JA4+ 방법이 개발 중입니다...
JA4+ 핑거프린트를 읽는 방법을 이해하려면 기술 세부 사항을 참조하세요.
구현
이 저장소에는 다음 언어로 된 JA4+가 포함되어 있습니다.
JA4+를 지원하는 도구
| 도구/벤더 | JA4+ 지원 |
|---|---|
| Wireshark | JA4+ |
| Zeek | JA4+ |
| Arkime | JA4+ (저희가 추천하는 오픈소스 JA4+ 도구) |
| Suricata | JA4+ (개발 중) |
| GreyNoise | JA4+ |
| Hunt | JA4+ |
| Driftnet | JA4+ |
| GoLang (1) | JA4X |
| GoLang (2) | JA4 |
| 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 | OXL의 JA4 및 JA4H 플러그인 |
| SentinelOne | JA4 |
| Akamai | JA4 |
| Alibaba Cloud | JA4 |
| Huawei Cloud | JA4 |
| Google Cloud LBs | JA4 |
| eSentire | JA4+ |
| Microsoft Azure Front Door CDN | JA4 |
| Synapse by Gen0Sec | JA4X |
| Zscaler | JA4 |
| ExtraHop | JA4+ |
| Validin | JA4+ |
| Auth0 | JA4 |
| Security Onion | JA4+ |
| bunny.net | JA4 |
| ENEA | JA4+ |
| F5 Distributed Cloud Services | JA4+ |
더 많은 도구가 곧 발표될 예정입니다...
예시
| 애플리케이션 | JA4+ 핑거프린트 |
|---|---|
| Chrome | JA4=t13d1517h2_8daaf6152771_cb7bf5808d99 (TCP) JA4=q13d0312h3_55b375c5d22e_178839b6cec1 (QUIC) |
| 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 |
더 많은 예시는 ja4plus-mapping.csv를 참조하세요.
전체 데이터베이스는 ja4db.com을 참조하세요.
플러그인
바이너리
JA4 바이너리는 이 스위트의 Rust 구현으로 빌드됩니다. 전체 기능을 보장하려면 tshark(버전 4.0.6 이상)가 필요합니다. 최신 JA4 바이너리는 Releases 페이지에서 다운로드하세요. Rust 구현의 릴리스 버전은 시맨틱 버저닝을 따르며 Wireshark 플러그인 릴리스와 달리 vX.Y.Z로 표시됩니다.
릴리스 자산
릴리스 자산은 구성 요소와 플랫폼에 따라 이름이 지정됩니다:
- Rust:
ja4-vX.Y.Z-<architecture>-<platform>.tar.gz(예:ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz)
- Python:
ja4-python-vX.Y.Z.tar.gz(전체python/디렉토리 포함)
- Wireshark:
ja4.so.linux,ja4.so.macos,ja4.dll(wireshark-vX.Y.Z와 같은 이름의 릴리스에 첨부됨)
시스템과 구성 요소에 맞는 적절한 파일을 선택하세요.
tshark 설치
Linux
패키지 관리자를 사용하여 설치하세요 (패키지 이름 tshark 또는 wireshark-cli는 배포판에 따라 다릅니다). 예를 들어, Ubuntu에서는:```sh
sudo apt install tshark
#### macOS
1. [다운로드](https://www.wireshark.org/download.html)하여 Wireshark를 설치합니다(`tshark` 포함).
2. `tshark`를 `PATH`에 추가합니다: ```sh
sudo ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
Windows
- 다운로드하여 Wireshark를 설치합니다(
tshark.exe포함). tshark.exe의 위치를 찾습니다(보통C:\Program Files\Wireshark\tshark.exe에 있음).tshark.exe가 포함된 폴더를 시스템PATH에 추가합니다:- 시스템 속성 > 환경 변수 > 경로 편집을 엽니다.
JA4+ 실행
tshark와 JA4+ 바이너리가 준비되면 다음 명령을 사용하여 JA4+를 실행합니다:
- Linux 및 macOS에서: ```sh
./ja4 [options] [pcap]
- Windows에서는 명령 프롬프트를 열고 다음을 실행하세요: ```cmd
ja4 [options] [pcap]
JA4+ 및 고급 구성 실행에 대한 자세한 내용은 Rust 구현 README를 참조하세요. 해당 문서에는 기능, 사용 시나리오 및 사용자 지정 옵션에 대한 정보가 제공됩니다.
데이터베이스
공식 JA4+ 핑거프린트, 관련 애플리케이션 및 권장 탐지 로직 데이터베이스는 여기에서 확인할 수 있습니다: ja4db.com
이 데이터베이스는 매우 활발하게 개발 중입니다. 앞으로 몇 달 안에 훨씬 더 많은 핑거프린트 조합과 데이터가 추가될 것으로 예상됩니다.
빠른 참조를 위해 샘플 ja4plus-mapping.csv도 제공됩니다.
릴리스 프로세스
JA4+는 GitHub Actions를 사용하여 Rust, Python, Wireshark 및 Zeek 구성 요소의 릴리스를 자동화합니다. 릴리스는 특정 접두사가 있는 태그를 저장소에 푸시하여 생성되며, Zeek는 순수 시맨틱 버전(semver) 태그를 사용하는 예외입니다. 릴리스 자산의 이름은 다음과 같습니다:
- Rust:
ja4-vX.Y.Z-<architecture>-<platform>.tar.gz - Python:
ja4-python-vX.Y.Z.tar.gz - Wireshark:
ja4.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, Python 또는 Wireshark의 경우 적절한 접두사를 사용합니다(예:
rust-v0.18.5,python-v0.1.0,wireshark-v0.1.1). - Zeek의 경우 순수 semver 태그를 사용합니다(예:
v1.2.3).
예시: ```sh git tag v1.2.3 git push origin v1.2.3
- Rust, Python 또는 Wireshark의 경우 적절한 접두사를 사용합니다(예:
(Zeek의 경우)
또는, Rust의 경우: ```sh git tag rust-v0.18.5 git push origin rust-v0.18.5
3. 해당 GitHub Actions 워크플로우가 실행되어 릴리스 자산을 자동으로 게시합니다. Zeek의 경우 릴리스는 [packages.zeek.org](https://packages.zeek.org/)에 표시됩니다.
## JA4+ 상세 정보
JA4+는 인간과 기계 모두가 읽을 수 있는 여러 프로토콜에 대한 간단하면서도 강력한 네트워크 핑거프린트 세트로, 위협 헌팅과 보안 분석을 개선합니다. 네트워크 핑거프린팅에 익숙하지 않다면, JA3을 공개한 제 블로그 [여기](https://medium.com/salesforce-engineering/tls-fingerprinting-with-ja3-and-ja3s-247362855967), JARM [여기](https://medium.com/salesforce-engineering/easily-identify-malicious-servers-on-the-internet-with-jarm-e095edac525a), 그리고 Fastly의 [TLS 핑거프린팅 현황](https://www.fastly.com/blog/the-state-of-tls-fingerprinting-whats-working-what-isnt-and-whats-next)에 관한 훌륭한 블로그를 읽어보시길 권장합니다. 해당 블로그는 앞서 언급한 방법들의 역사와 문제점을 설명합니다. 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+ 방법 목록과 설명은 [현재 방법 및 구현 세부 정보](#current-methods-and-implementation-details)를 참조하세요.
JA4+ 핑거프린트를 읽는 방법을 이해하려면 [기술 세부 정보](https://github.com/foxio-llc/ja4/blob/main/technical_details/README.md)를 참조하세요.
## 라이선스
*JA4: TLS Client Fingerprinting*은 JA3과 동일하게 [오픈소스, BSD 3-Clause](https://github.com/foxio-llc/ja4/blob/main/LICENSE-JA4)입니다. FoxIO는 특허 청구가 없으며 JA4 TLS Client Fingerprinting에 대한 특허 보호를 추진할 계획이 없습니다. 이를 통해 현재 JA3을 사용하는 모든 회사나 도구는 지체 없이 즉시 JA4로 업그레이드할 수 있습니다.
**JA4S, JA4L, JA4LS, JA4L-Delta, JA4H, JA4X, JA4SSH, JA4T, JA4TS, JA4TScan, JA4D, JA4D6, JA4Scan-TLS, JA4Scan-QUIC, JA4N 및 향후 추가될 모든 기능(통칭 JA4+)** 은 특허 출원 중이며 [FoxIO License 1.1](https://github.com/foxio-llc/ja4/blob/main/LICENSE)에 따라 라이선스가 부여됩니다. 이 라이선스는 학술 및 내부 비즈니스 목적을 포함한 대부분의 사용 사례에 대해 허용적이지만, 수익화에는 허용적이지 않습니다. 예를 들어, 회사가 자체 보안을 강화하기 위해 JA4+를 내부적으로 사용하려는 경우 허용됩니다. 예를 들어, 벤더가 제품 제공의 일부로 JA4+ 핑거프린팅을 판매하려는 경우 당사에 OEM 라이선스를 요청해야 합니다.
JA4+는 FoxIO의 상표입니다.
JA4+는 오픈소스 도구에 구현될 수 있으며 실제로 구현되고 있습니다. 자세한 내용은 [라이선스 FAQ](https://github.com/foxio-llc/ja4/blob/main/License%20FAQ.md)를 참조하세요.
이 라이선스는 JA4+를 개방적이고 즉시 사용 가능한 방식으로 세상에 제공하면서도, 지속적인 지원, 새로운 방법 연구, JA4+ 데이터베이스 개발에 자금을 조달할 수 있는 방법을 제공합니다. 우리는 모든 사람이 JA4+를 활용할 수 있기를 바라며, 이를 실현하기 위해 벤더 및 오픈소스 프로젝트와 협력하게 되어 기쁩니다.
## Q&A
Q: 암호를 정렬하는 이유는 무엇인가요? 순서가 중요하지 않나요?
A: 중요하지만, 연구 결과 애플리케이션과 라이브러리는 고유한 순서보다 고유한 암호 목록을 선택하는 경우가 더 많다는 것을 발견했습니다. 또한 이는 JA3 탐지를 방지하기 위해 암호 순서를 무작위화하는 전술인 "암호 스턴팅(cipher stunting)"의 효과를 줄입니다.
Q: 확장 프로그램을 정렬하는 이유는 무엇인가요?
A: 2023년 초, Google은 [Chromium](https://chromestatus.com/feature/5124606246518784) 브라우저를 업데이트하여 확장 프로그램 순서를 무작위화했습니다. 암호 스턴팅과 마찬가지로 이는 JA3 탐지를 방지하고 "TLS 생태계를 변화에 더 강하게 만들기" 위한 전술이었습니다. Google은 서버 구현자들이 Chrome 핑거프린트가 절대 변경되지 않을 것이라고 가정하고 이를 기반으로 로직을 구축하여, Google이 Chrome을 업데이트할 때마다 문제가 발생할 것을 우려했습니다.
따라서 분명히 말씀드립니다: JA4 핑거프린트는 애플리케이션 TLS 라이브러리가 업데이트됨에 따라 약 1년에 한 번씩 변경됩니다. 애플리케이션이 업데이트되는 환경에서 핑거프린트가 일정하게 유지될 것이라고 가정하지 마세요. 어쨌든 확장 프로그램을 정렬하면 이 문제를 해결할 수 있고, 서명 알고리즘을 추가하면 고유성이 보존됩니다.
Q: TLS 1.3이 TLS 클라이언트 핑거프린팅을 더 어렵게 만들지 않나요?
A: 아니요, 오히려 더 쉽게 만듭니다! TLS 1.3 이후 클라이언트는 훨씬 더 많은 확장 프로그램 세트를 보유하게 되었으며, TLS 1.3이 소수의 암호만 지원하더라도 브라우저와 애플리케이션은 여전히 훨씬 더 많은 암호를 지원합니다.
## JA4+ 제작자
[John Althouse](https://www.linkedin.com/in/johnalthouse/), 피드백 제공:
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에게 연락하세요.
<sub>JA4 및 JA4+는 FoxIO, Inc.의 상표입니다.
Copyright (c) 2026, FoxIO</sup>