Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
citrix-netscaler-triage — Citrix NetScaler 장치용 포렌식 트라이지 툴킷으로, 웹셸, 타임스탬프 변조, 의심스러운 바이너리를 탐지하는 Dissect 기반 IOC 스캐너와 CVE 취약점을 식별하는 원격 버전 스캐너를 갖추고 있습니다. | Kitploit
도구/GitHubGitHub/fox-it/citrix-netscaler-triage
Indicator of Compromise (IOC) ManagementVulnerability ScannersWeb SecurityNetwork SecurityDigital ForensicsIncident Response
GitHubfox-it/citrix-netscaler-triage

citrix-netscaler-triage

Citrix NetScaler 장치용 포렌식 트라이지 툴킷으로, 웹셸, 타임스탬프 변조, 의심스러운 바이너리를 탐지하는 Dissect 기반 IOC 스캐너와 CVE 취약점을 식별하는 원격 버전 스캐너를 갖추고 있습니다.

저장소 보기
741913917일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

Citrix NetScaler 트리아지

이 저장소에는 Citrix NetScaler 장치용 트리아지 스크립트가 포함되어 있습니다:

  • iocitrix.py -- Citrix NetScaler 이미지/대상을 트리아지하기 위한 Dissect 스크립트입니다.
  • scan-citrix-netscaler-version.py -- HTTP(s)를 통해 NetScaler 장치의 버전을 스캔하고 핑거프린트합니다.

scan-citrix-netscaler-version.py

이 스크립트를 사용하여 HTTP(s)를 통해 Citrix NetScaler 장치의 버전을 스캔하고 확인할 수 있습니다. 또한 버전을 기반으로 NetScaler가 특정 CVE에 취약한지 여부도 판단합니다.

scan-citrix-netscaler-version.py 설치

pip를 사용하는 경우 다음 단계를 따르세요:

  1. git clone https://github.com/fox-it/citrix-netscaler-triage.git
  2. cd citrix-netscaler-triage
  3. pip install httpx
  4. python3 scan-citrix-netscaler-version.py --help

uv를 사용하는 경우, 다음 명령으로 스크립트를 직접 실행할 수 있습니다:

  1. uv run https://raw.githubusercontent.com/fox-it/citrix-netscaler-triage/refs/heads/main/scan-citrix-netscaler-version.py

사용 예시:

$ python3 scan-citrix-netscaler-version.py 192.168.1.10 192.168.1.12
192.168.1.10 (*.local.domain) is running Citrix NetScaler version 13.1-51.15 (VULNERABLE)
192.168.1.12 (*.local.domain) is running Citrix NetScaler version 12.1-55.330 (NOT VULNERABLE)

또는 결과를 JSON으로 얻을 수 있습니다:

$ python3 scan-citrix-netscaler-version.py https://192.168.1.11 --json | jq
{
  "scanned_at": "2025-09-03T23:11:36.864228+00:00",
  "target": "https://192.168.1.11",
  "tls_names": "my-first-netscaler.local",
  "rdx_en_stamp": 1702886392,
  "rdx_en_dt": "2023-12-18T07:59:52+00:00",
  "version": "12.1-55.302",
  "error": null,
  "vulnerable": {
    "CVE-2025-5349": true,
    "CVE-2025-5777": true,
    "CVE-2025-6543": false,
    "CVE-2025-7775": true,
    "CVE-2025-7776": true,
    "CVE-2025-8424": true
  },
  "is_vulnerable": true
}

--cve 플래그를 사용하여 취약점 상태 확인을 특정 CVE로 제한할 수도 있습니다:

$ python3 scan-citrix-netscaler-version.py https://192.168.1.11 --cve CVE-2025-6543 --json | jq
{
  "scanned_at": "2025-09-03T23:16:36.573016+00:00",
  "target": "https://192.168.1.11",
  "tls_names": "my-first-netscaler.local",
  "rdx_en_stamp": 1702886392,
  "rdx_en_dt": "2023-12-18T07:59:52+00:00",
  "version": "12.1-55.302",
  "error": null,
  "vulnerable": {
    "CVE-2025-6543": false
  },
  "is_vulnerable": false
}

결과를 CSV 형식으로 얻으려면 --csv 플래그를 사용하세요. 더 많은 옵션은 --help를 참조하세요.

iocitrix.py

iocitrix.py를 사용하여 NetScaler Dissect 대상에서 알려진 침해 지표(Indicators of Compromise)를 확인할 수 있습니다. 다음 항목을 검사합니다:

  • 웹셸에 사용되는 알려진 문자열
  • 타임스톰프된 파일
  • 의심스러운 크론잡
  • 알 수 없는 SUID 바이너리

이 스크립트는 Citrix NetScaler 장치 자체가 아니라 Citrix NetScaler 장치의 포렌식 디스크 이미지에서 실행하도록 만들어졌다는 점에 유의하세요. 또한 Citrix NetScaler의 포렌식 디스크 이미지를 만드는 방법은 Citrix NetScaler 디스크 이미지 생성 섹션을 참조하세요.

최신 버전의 Dissect를 사용하고 있는지 확인하세요. Citrix NetScaler 지원은 다음 PR에서 추가되었습니다: https://github.com/fox-it/dissect.target/pull/357

면책 조항: 이 도구는 정확성을 추구하지만, 거짓 양성 또는 거짓 음성을 생성할 수 있습니다. 사용자는 이 도구의 출력에 기반하여 결정을 내리기 전에 결과를 교차 확인하고 자신의 판단을 사용할 것을 권장합니다.

iocitrix.py 설치

다음 단계를 따르세요:

  1. git clone https://github.com/fox-it/citrix-netscaler-triage.git
  2. cd citrix-netscaler-triage
  3. pip install -r requirements.txt
  4. pip install --upgrade --pre dissect.volume dissect.target

4단계에서 다음 오류가 출력되지만 무시해도 됩니다:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.

그런 다음 iocitrix.py <TARGETS>를 실행하여 하나 이상의 포렌식 이미지에 대해 IOC 검사를 시작할 수 있습니다. 이 스크립트는 .VMDK 또는 원시 디스크 이미지와 같이 dissect가 Target으로 읽을 수 있는 모든 입력을 허용합니다. 몇 가지 예시가 아래에 제공됩니다.

python3 iocitrix.py image.vmx
python3 iocitrix.py image.vmdk

RAM 디스크의 포렌식 이미지도 생성한 경우, 다음과 같이 iocitrix.py를 활용하여 트리아지에 휘발성 데이터를 포함시킬 수 있습니다:

python3 iocitrix.py md0.img+image.vmx
python3 iocitrix.py md0.img+image.vmdk
python3 iocitrix.py md0.img+da0.img

+(플러스) 기호는 두 디스크 이미지를 단일 Dissect Target으로 로드합니다.

Citrix NetScaler 디스크 이미지 생성

Citrix NetScaler는 오프라인 포렌식 분석을 위해 이미징할 수 있는 두 개의 중요한 블록 장치를 노출합니다. 이러한 블록 장치 파일은 다음 경로에서 찾을 수 있습니다:

  • /dev/md0: 루트(/) 디렉터리를 보유하는 디스크입니다. 이는 RAM 디스크입니다
  • /dev/da0 또는 /dev/ada0: /var 및 /flash 디렉터리를 보유하는 디스크입니다. 이는 영구 디스크입니다.

Citrix NetScaler의 루트 디렉터리(/)는 RAM 디스크이므로 휘발성 디스크입니다. 이 디스크는 NetScaler가 전원이 켜져 실행 중일 때 /dev/md0에서 찾을 수 있으며, NetScaler의 전원이 꺼지면 사용할 수 없습니다. /var 및 /flash 디렉터리는 /dev/da0 또는 /dev/ada0 디스크에 두 개의 별도 파티션으로 존재하며 영구적입니다.

다음 명령은 로컬 Linux 머신에서 SSH를 통해 NetScaler의 디스크 복사본을 만드는 데 사용할 수 있습니다. Windows를 사용하는 경우 WSL(wsl.exe) 또는 Git Bash(git-bash.exe)를 사용하여 동일한 명령을 사용할 수 있습니다. PowerShell은 SSH를 통한 원시 바이너리 데이터 스트리밍을 제대로 처리하지 못하므로 네이티브 PowerShell 명령은 사용하지 마세요.

1. NetScaler의 디스크 크기를 확인하여 예상 이미지 크기를 확인합니다.

이는 영구 디스크가 /dev/da0인지 /dev/ada0인지를 포함하여 사용 가능한 디스크를 표시합니다. 그런 다음 정확한 크기를 확인합니다:

local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell diskinfo /dev/da0
local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell diskinfo /dev/ada0

RAM 디스크의 경우:

local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell diskinfo /dev/md0

결과로 생성되는 da0.img 또는 ada0.img는 해당 장치의 크기와 거의 같으며, md0.img는 /dev/md0의 크기와 거의 같습니다.

2. 로컬 시스템의 디스크 공간을 확인합니다

local ~ $ df -h .

이전 단계에서 계산된 디스크 이미지 파일의 크기를 수용할 수 있는 충분한 공간이 있는지 확인하세요.

3. /dev/da0 또는 /dev/ada0 디스크의 디스크 이미지를 로컬 머신에 생성합니다

디스크 이름에 따라 다음 중 하나를 실행하세요

local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell dd if=/dev/da0 bs=10M | tail -c +7 | head -c -6 > da0.img

또는

local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell dd if=/dev/ada0 bs=10M | tail -c +7 | head -c -6 > ada0.img

이 작업은 완료하는 데 시간이 걸릴 수 있습니다. dd를 사용할 때는 진행 상황이 표시되지 않습니다. 프롬프트에 대한 제어권을 다시 얻을 때까지 기다리는 것이 좋습니다. 이는 dd가 완료되었음을 나타내는 신호입니다.

tail 및 head 명령은 바이트 스트림에서 NetScaler SSH 배너를 제거하는 데 사용됩니다. NetScaler SSH 배너는 시간이 지남에 따라 변경될 수 있으며, 이 경우 명령을 수동으로 편집해야 합니다.

4. (선택 사항) /dev/md0 디스크의 디스크 이미지를 로컬 머신에 생성합니다

이 단계는 건너뛸 수 있지만, iocitrix.py가 특정 침해 지표를 놓칠 수 있습니다. 따라서 /dev/md0와 /dev/da0 또는 /dev/ada0 모두의 디스크 이미지를 생성하는 것이 권장됩니다.

local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell dd if=/dev/md0 bs=10M | tail -c +7 | head -c -6 > md0.img

5. 이미지에서 iocitrix.py 실행

로컬 머신에서 이전 명령을 실행한 후, da0.img 또는 ada0.img와 md0.img 파일이 존재하게 됩니다. iocitrix가 이 파일들을 가리키도록 하여 이미지 트리아지를 시작할 수 있습니다. 다음 명령을 사용하세요:

local ~ $ python3 iocitrix.py md0.img+da0.img

또는

local ~ $ python3 iocitrix.py md0.img+ada0.img

출력 예시:

(venv) user@dissect:/data/netscaler/image$ python3 iocitrix.py md0.img+da0.img
<Target md0.img+da0.img>

Disks
- <RawContainer size=555745286 vs=None>
- <RawContainer size=21474836486 vs=<DissectVolumeSystem serial=None>>

Volumes
- <Volume name=None size=555745286 fs=<FfsFilesystem>>
- <Volume name='part_00000000' size=1717567488 fs=<FfsFilesystem>>
- <Volume name='part_66600000' size=4401922048 fs=<FfsFilesystem>>
- <Volume name='part_16cc00000' size=2097152 fs=<FfsFilesystem>>
- <Volume name='part_16ce00000' size=15353200128 fs=<FfsFilesystem>>

Hostname      : None
Domain        : None
IPs           : 10.164.0.39, 10.164.0.10
OS family     : citrix-netscaler (CitrixBsdPlugin)
OS version    : NetScaler 13.1 build 30 (ns-13.1-30.52)
Architecture  : x86_64-citrix-netscaler
Language(s)   :
Timezone      : None
Install date  : 2023-08-08 13:59:38.228043+00:00
Last activity : 2023-08-11 08:51:13.979536+00:00


*** Checking for webshells ***
도구 다운로드