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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/secorizon/msfinger
ReconnaissanceNetwork MappingVulnerability AnalysisInformation GatheringPenetration TestingDNS Analysis
GitHubsecorizon/msfinger

MSFinger

Microsoft 네트워크 서비스 핑거프린팅 도구

저장소 보기
7577개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
MSFinger — Microsoft 네트워크 서비스 핑거프린팅 도구 | Kitploit
웹사이트

MSFinger - Microsoft 네트워크 서비스 핑거프린팅 도구

버전: 1.0
저자: Laurent Gaffie
회사: Secorizon

개요

MSFinger는 내부 네트워크 정찰을 위해 설계된 고성능 네트워크 핑거프린팅 도구입니다. SMB, LDAP 및 LDAPS 프로토콜 전반에 걸쳐 Microsoft 서비스를 신속하게 식별하고, 보안 구성을 탐지하며, 잠재적 취약점을 강조 표시합니다.

주요 기능:

  • 내부 네트워크에 최적화된 고속 동시 스캔(기본 1초 타임아웃)
  • SMB/SMB2/SMB3 버전 및 서명(signing) 탐지
  • LDAP/LDAPS 서명 및 채널 바인딩 탐지
  • 빌드 번호 매핑을 통한 OS 버전 식별
  • 지속적인 스캔 결과 저장을 위한 SQLite 데이터베이스
  • 보안 위험을 강조하는 색상 구분 출력
  • 단일 IP, CIDR 범위, IP 범위 및 파일 입력 지원

설치

MSFinger는 순수 Python으로 작성되었습니다. Python 3.6+ 외에 추가 종속성은 필요하지 않습니다.

root@kitploit:~
cd /path/to/MSFinger
chmod +x MSFinger.py

사용법

기본 구문

root@kitploit:~
python3 MSFinger.py -i <target> [options]

명령줄 옵션

* -i 또는 -f 중 하나를 반드시 지정해야 합니다


예시

단일 호스트 스캔

root@kitploit:~
python3 MSFinger.py -i 192.168.1.10

서브넷 스캔(CIDR)

root@kitploit:~
python3 MSFinger.py -i 192.168.1.0/24

IP 범위 스캔

root@kitploit:~
python3 MSFinger.py -i 192.168.1.1-50

파일에서 여러 범위 스캔

root@kitploit:~
python3 MSFinger.py -f targets.txt

예시 targets.txt:

root@kitploit:~
192.168.1.0/24
10.0.0.1-100
172.16.5.50
# Comments are supported
192.168.2.0/25

사용자 지정 타임아웃 및 작업자 수

root@kitploit:~
# Faster scan with shorter timeout and more workers
python3 MSFinger.py -i 10.0.0.0/16 -t 0.3 -w 200

# More reliable scan with longer timeout
python3 MSFinger.py -i 192.168.1.0/24 -t 1.0 -w 50

사용자 지정 데이터베이스

root@kitploit:~
python3 MSFinger.py -i 192.168.1.0/24 -d pentest_2026.db

색상 비활성화(로깅용)

root@kitploit:~
python3 MSFinger.py -i 192.168.1.0/24 --no-color > scan_results.txt

출력 형식

콘솔 출력

결과는 색상으로 구분된 보안 표시기와 함께 실시간으로 표시됩니다:

root@kitploit:~
[192.168.1.10] SMB: 3.1.1, Signing: required, OS: Windows Server 2022 21H2, Domain: CORP.LOCAL, Boot: 2026-01-01 10:30:15 | SMB1: disabled | Services: RDP, LDAP (signing: required), LDAPS (signing: required, channel binding: required)

색상 구분

  • 🟢 GREEN: 안전한 구성(서명 필수)
  • 🟡 YELLOW: 경고(활성화되었지만 필수는 아님, 또는 포트가 열려 있으나 오류 발생)
  • 🔴 RED: 취약(서명 비활성화 또는 필수 아님)
  • 🔵 BLUE: 정보 제공(SMB1 비활성화, 서비스 상태)

출력 필드

SMB 정보:

  • SMB: X.X.X - SMB 방언(dialect) 버전 (2.0.2, 2.1, 3.0, 3.0.2, 3.1.1)
  • Signing: <status> - 필수/활성화/비활성화
  • OS: <version> - 빌드 번호가 포함된 Windows 버전
  • Domain: <name> - NetBIOS 도메인/작업 그룹 이름
  • Boot: <time> - 시스템 부팅 시간(또는 Disabled/Unknown)

SMB1 상태:

  • SMB1: disabled - SMB1 미지원(안전)
  • SMB1: supported, Signing: <status> - SMB1 활성화(잠재적 위험)

서비스:

  • RDP - RDP(원격 데스크톱 프로토콜, 포트 3389) 열림
  • MSSQL - Microsoft SQL Server(포트 1433) 열림
  • LDAP (signing: <status>) - 포트 389의 LDAP
  • LDAPS (signing: <status>, channel binding: <status>) - 포트 636의 LDAPS
  • LDAPS (port open, <error>) - LDAPS 포트가 응답하지만 SSL 핸드셰이크 실패

데이터베이스 스키마

MSFinger는 모든 스캔 결과를 지속적인 저장 및 분석을 위해 SQLite 데이터베이스에 저장합니다.

테이블: hosts

데이터베이스 동작

  • 기존 데이터베이스: 최신 스캔 데이터로 레코드가 업데이트됩니다(upsert 작업)
  • 새 데이터베이스: 적절한 스키마로 자동 생성됩니다
  • 중복 IP: 동일 IP에 대한 이전 데이터를 마지막 스캔 결과가 덮어씁니다

데이터베이스 쿼리

root@kitploit:~
# View all vulnerable hosts (no SMB signing)
sqlite3 MSFinger.db "SELECT ip, os_version, smb_signing FROM hosts WHERE smb_signing != 'required'"

# Find hosts with LDAP signing disabled
sqlite3 MSFinger.db "SELECT ip, domain, ldap_signing FROM hosts WHERE ldap_signing = 'not_required'"

# List all Windows Server 2022 hosts
sqlite3 MSFinger.db "SELECT ip, os_version, domain FROM hosts WHERE os_version LIKE '%Server 2022%'"

# Export to CSV
sqlite3 -header -csv MSFinger.db "SELECT * FROM hosts" > results.csv

# Count hosts by OS
sqlite3 MSFinger.db "SELECT os_version, COUNT(*) FROM hosts GROUP BY os_version"

탐지 세부 정보

SMB/SMB2/SMB3 탐지

테스트되는 프로토콜:

  • SMB1(레거시 프로토콜, 활성화 시 보안 위험)
  • SMB2/3(여러 방언을 가진 최신 프로토콜)

수집되는 정보:

  1. 방언 버전: 2.0.2, 2.1, 3.0, 3.0.2, 3.1.1
  2. 서명 상태:
    • required - 서버가 메시지 서명을 요구함(안전)
    • enabled - 서버가 서명을 지원하지만 요구하지 않음
    • disabled - 서명을 지원하지 않음(취약)
  3. OS 버전: NTLMSSP 챌린지에서 추출
  4. 빌드 번호: 정확한 버전 식별을 위한 Windows 빌드 번호
  5. 도메인: NetBIOS 도메인 또는 작업 그룹 이름
  6. 부팅 시간: 시스템 시작 타임스탬프(가능한 경우)

OS 버전 매핑:

LDAP 탐지(포트 389)

서명 요구 사항을 확인하기 위해 익명 바인드를 테스트합니다:

  • 결과 코드 0: 성공 - 서명이 필수가 아님(릴레이 공격에 취약)
  • 결과 코드 8: 강력한 인증 필요 - 서명이 필수임(안전)
  • 기타 코드: 다양한 인증 오류

LDAPS 탐지(포트 636)

LDAP 바인드가 포함된 SSL/TLS 연결을 테스트합니다:

  1. SSL 핸드셰이크: 유연한 암호 제품군 지원으로 TLS 연결 시도
  2. 서명 탐지: SSL을 통한 LDAP 메시지 서명 테스트
  3. 채널 바인딩: TLS 채널 바인딩 적용 여부 탐지

가능한 결과:

  • signing: required, channel binding: required - 최대 보안(안전)
  • signing: not_required, channel binding: not_required - 보호 기능 없음(취약)
  • port open, SSL handshake failed - 포트가 응답하지만 SSL 협상 실패
  • port open, Connection error: 104 - 피어가 연결을 재설정함

보안 분석

주요 위험 발견 사항(🔴 RED)

SMB 서명 비활성화:

  • SMB 릴레이 공격에 취약
  • 공격자가 인증을 가로채서 릴레이할 수 있음
  • 권장 사항: 그룹 정책을 통해 SMB 서명 활성화

LDAP 서명 필수 아님:

  • LDAP 릴레이 공격에 취약
  • 자격 증명이 다른 서비스로 릴레이될 수 있음
  • 권장 사항: 레지스트리에서 LdapEnforceChannelBinding=2 및 LDAPServerIntegrity=2 설정

채널 바인딩 없는 LDAPS:

  • 암호화에도 불구하고 LDAPS 릴레이에 취약
  • 권장 사항: 인증 확장 보호(Extended Protection for Authentication) 활성화

경고(🟡 YELLOW)

SMB 서명 활성화(필수 아님):

  • 비활성화보다는 낫지만 강제되지는 않음
  • 클라이언트가 서명을 선택하지 않을 수 있음
  • 권장 사항: "enabled"에서 "required"로 변경

SMB1 지원:

  • 알려진 취약점이 있는 레거시 프로토콜
  • 레거시 시스템에서 필요하지 않는 한 비활성화해야 함
  • 권장 사항: PowerShell 또는 그룹 정책을 통해 SMBv1 비활성화

양호한 구성(🟢 GREEN)

SMB 서명 필수:

  • 모든 SMB 트래픽이 암호화 서명됨
  • 릴레이 공격 방지

LDAP/LDAPS 서명 필수:

  • LDAP 메시지가 서명됨
  • 변조 및 릴레이로부터 보호

채널 바인딩 적용:

  • TLS 채널 바인딩이 SSL 릴레이를 방지
  • 가장 높은 수준의 LDAPS 보안

성능 튜닝

타임아웃 권장 사항

네트워크 유형

메모리 고려 사항

각 작업자는 최소한의 메모리(~1-2MB)를 사용합니다. 시스템 리소스에 따라 작업자 수를 조정하세요:

root@kitploit:~
# High-performance scan (requires good CPU/RAM)
python3 MSFinger.py -i 10.0.0.0/8 -t 0.5 -w 500

# Conservative scan (low resource usage)
python3 MSFinger.py -i 192.168.0.0/16 -t 2.0 -w 50

문제 해결

결과가 표시되지 않는 경우

  1. 네트워크 연결 확인:

    root@kitploit:~
    ping <target_ip>
    telnet <target_ip> 445
    
  2. 타임아웃 증가:

    root@kitploit:~
    python3 MSFinger.py -i <target> -t 3.0
    
  3. 방화벽 규칙 확인:

    • 포트 445, 389, 636, 3389, 1433에 접근 가능한지 확인
    • 스캔을 차단하는 호스트 기반 방화벽이 없는지 확인

LDAPS 연결 오류

"SSL handshake failed" 또는 "Connection error: 104":

  • 서버가 클라이언트 인증서 인증을 요구할 수 있음
  • 서버가 비표준 SSL/TLS 구성을 사용할 수 있음
  • 진단을 위해 openssl s_client -connect <ip>:636 사용 시도

데이터베이스 잠김

여러 프로세스에서 스캔하는 경우:

root@kitploit:~
# Use different database files
python3 MSFinger.py -i 192.168.1.0/24 -d scan1.db &
python3 MSFinger.py -i 192.168.2.0/24 -d scan2.db &

권한 오류

스크립트가 실행 가능한지 확인하세요:

root@kitploit:~
chmod +x MSFinger.py

통합 예시

Nmap 통합

먼저 활성 SMB 호스트를 식별한 후 핑거프린팅:

root@kitploit:~
nmap -p445 --open -oG - 192.168.1.0/24 | awk '/445\/open/{print $2}' > smb_hosts.txt
python3 MSFinger.py -f smb_hosts.txt

예약 스캔

cron으로 네트워크 변경 사항 모니터링:

root@kitploit:~
# Add to crontab (every day at 2 AM)
0 2 * * * /usr/bin/python3 /path/to/MSFinger.py -i 192.168.1.0/24 -d /var/scans/daily_scan.db

PowerShell 내보내기

PowerShell에서 쿼리 및 조치:

root@kitploit:~
# Install SQLite PowerShell module
Install-Module -Name SimplySql

# Query vulnerable hosts
Open-SQLiteConnection -DataSource "MSFinger.db"
$vulnerable = Invoke-SqlQuery -Query "SELECT ip FROM hosts WHERE smb_signing != 'required'"
Close-SqlConnection

# Remediate
foreach ($host in $vulnerable) {
    Set-SmbServerConfiguration -ComputerName $host.ip -RequireSecuritySignature $true -Force
}

크레딧

저자: Laurent Gaffie ([email protected])
라이선스: GNU General Public License v3.0


라이선스

이 프로그램은 자유 소프트웨어입니다: 자유 소프트웨어 재단(Free Software Foundation)이 공표한 GNU 일반 공중 사용 허가서(GNU General Public License) 버전 3 또는(선택에 따라) 이후 버전의 조건에 따라 이를 재배포하거나 수정할 수 있습니다.

이 프로그램은 유용하게 사용되기를 바라는 마음으로 배포되지만, 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증을 포함한 어떠한 보증도 없이 배포됩니다. 자세한 내용은 GNU 일반 공중 사용 허가서를 참조하십시오.

도구 다운로드
옵션설명기본값
-i, --ip대상 IP, CIDR 범위 또는 IP 범위필수*
-f, --file대상을 포함하는 파일(줄당 하나)필수*
-t, --timeout연결 타임아웃(초)1.0
-w, --workers동시 작업자 수100
-d, --database결과 저장용 SQLite 데이터베이스 파일MSFinger.db
--no-color색상 출력 비활성화비활성화
컬럼타입설명
idINTEGER기본 키(자동 증가)
ipTEXTIP 주소(고유)
hostnameTEXT호스트 이름(향후 사용을 위해 예약됨)
os_versionTEXT운영 체제 버전
os_buildINTEGEROS 빌드 번호
domainTEXT도메인/작업 그룹 이름
boot_timeTEXT시스템 부팅 타임스탬프
smb_dialectTEXTSMB 프로토콜 버전
smb_signingTEXTSMB 서명 상태
smb1_supportedINTEGERSMB1 활성화 여부(0=아니오, 1=예)
smb1_signingTEXTSMB1 서명 상태
rdp_openINTEGERRDP 포트 열림 여부(0=아니오, 1=예)
mssql_openINTEGERMSSQL 포트 열림 여부(0=아니오, 1=예)
ldap_signingTEXTLDAP 서명 상태
ldaps_signingTEXTLDAPS 서명 상태
ldaps_channel_bindingTEXTLDAPS 채널 바인딩 상태
ldaps_errorTEXTLDAPS 연결 오류(있는 경우)
scan_timeTIMESTAMP첫 스캔 타임스탬프
last_seenTIMESTAMP가장 최근 스캔 타임스탬프
빌드 범위운영 체제
10240Windows 10 1507
14393Windows 10 1607 / Server 2016
17763Windows 10 1809 / Server 2019
19041-19045Windows 10 20H2 - 22H2
20348Windows Server 2022 21H2
22000+Windows 11
25398Windows Server 2025
권장 타임아웃
작업자 수
고속 내부 LAN(1Gbps+)0.5초200-300
일반 내부 네트워크1.0초(기본값)100-150
느린/무선 네트워크2.0-3.0초50-100
VPN 연결3.0-5.0초30-50