📚 네트워크 · 패킷 분석 › 02. 포트 · 프로토콜 분석 — 73편
이전 글: 72. LDAP·Kerberos 포트 — 인증 인프라 트래픽 개요 · 다음 글: 74. NFS
참고(리눅스 시스템 기초): 37. Listening Port 보안 점검 — 불필요한 리슨 포트 찾기
SMB(Server Message Block)는 Windows 환경의 파일·프린터 공유와 원격 관리를 담당하는 프로토콜입니다. 사내망에서는 매일 대량으로 오가는 정상 트래픽이지만, 동시에 공격자가 한 대를 장악한 뒤 옆 PC·서버로 퍼지는(Lateral Movement) 대표 통로이기도 합니다.
즉 445번 트래픽 자체는 정상이지만, "누가, 어디로, 얼마나 넓게" 접속하는지가 관제의 핵심 질문이 됩니다.
| 포트 | 이름 | 용도 |
|---|---|---|
| TCP 445 | SMB over TCP (Direct Hosting) | 현재 SMB의 기본 포트 |
| TCP 139 | NetBIOS Session Service | NetBIOS 위의 구형 SMB 전송 |
| UDP 137 | NetBIOS Name Service | NetBIOS 이름 조회 |
| UDP 138 | NetBIOS Datagram Service | 브로드캐스트 기반 공지·브라우징 |
최신 환경은 445만으로 동작합니다. 137~139가 보이면 레거시 호환 설정이 남아 있다는 신호입니다.
| 버전 | 대표 도입 시기 | 보안 관점 |
|---|---|---|
| SMB1 (CIFS) | 구형 Windows | MS17-010 등 치명적 취약점 이력, 현재 비활성화 권고. 최신 Windows는 기본 미설치 또는 비활성 |
| SMB 2.x | Windows Vista / Server 2008 이후 | 구조 개선, 서명(Signing) 지원 |
| SMB 3.x | Windows 8 / Server 2012 이후 | 전송 암호화 지원, 3.1.1에서 협상 과정 무결성 보호 강화 |
| 공유 | 설명 | 관제 의미 |
|---|---|---|
일반 공유 (예: \\fs01\부서자료) | 사용자 파일 공유 | 대량 읽기·쓰기 = 유출 또는 랜섬웨어 암호화 |
C$, D$ 등 | 드라이브 전체 관리 공유(관리자 권한) | 일반 사용자 PC 간 접근은 비정상 |
ADMIN$ | Windows 폴더 관리 공유 | 원격 실행 파일 복사 경로로 악용 |
IPC$ | 프로세스 간 통신(명명된 파이프) | 원격 서비스 제어·정보 조회의 통로 |

그림 1. 445 연결 → 인증 → 공유 접근 → 원격 실행 순서로 남는 흔적
클라이언트 192.168.10.20 파일 서버 192.168.10.10:445
│── TCP 3-Way Handshake ─────────────────────────→│
│── Negotiate (지원 버전·기능 제시) ──────────────→│
│←─ Negotiate Response (선택된 버전: 예 3.1.1) ────│
│── Session Setup (NTLM 또는 Kerberos 인증) ─────→│
│←─ Session Setup Response (성공/실패) ────────────│ ← 인증 결과
│── Tree Connect \\192.168.10.10\share ──────────→│ ← 어떤 공유에 접근?
│←─ Tree Connect Response ─────────────────────────│
│── Create / Read / Write / Close (파일 작업) ────→│ ← 무엇을 했나?
│── Tree Disconnect / Logoff ─────────────────────→│
관제에서 중요한 단계는 Session Setup(누가), Tree Connect(어느 공유에), Create/Write(무엇을) 입니다. 각 메시지의 필드 해석은 (03. Wireshark 패킷 분석 시리즈에서 다룸)
[장악된 PC-A] 탈취 계정/해시 보유
│
│ ① 445 접속, Session Setup (관리자 계정으로 인증)
↓
[대상 PC-B]
│ ② Tree Connect \\PC-B\ADMIN$ → 실행 파일 복사 (Write)
│ ③ Tree Connect \\PC-B\IPC$ → 서비스 제어 파이프로 새 서비스 등록·시작
↓
PC-B에서 복사된 파일이 서비스로 실행 → PC-B도 장악 → 다음 대상으로 반복
이 방식은 정상 관리 도구(원격 관리 유틸리티)의 동작 방식과 같습니다. 그래서 도구 이름이 아니라 "누가 어디에서 관리 공유를 쓰는가" 로 판단해야 합니다.
실습 환경: 본인 소유 Linux VM (Rocky Linux 또는 Ubuntu), 인터페이스는 ens33을 예시로 사용합니다. Windows 없이 Samba(리눅스용 SMB 서버) 와 smbclient로 SMB 동작과 로그를 관찰합니다. 접속은 루프백에서만 합니다.
| 항목 | Rocky Linux | Ubuntu |
|---|---|---|
| 패키지 | samba samba-client | samba smbclient |
| 서비스 이름 | smb | smbd |
| 로그 위치 | /var/log/samba/ | /var/log/samba/ |
# Rocky
sudo dnf install -y samba samba-client tcpdump
# Ubuntu
sudo apt install -y samba smbclient tcpdump
# 공유 디렉터리와 테스트 계정
sudo mkdir -p /srv/labshare
sudo useradd -M -s /sbin/nologin smbtest
sudo smbpasswd -a smbtest # Samba 전용 비밀번호 설정
sudo chown smbtest: /srv/labshare
# Rocky: SELinux 컨텍스트 지정
sudo chcon -t samba_share_t /srv/labshare
/etc/samba/smb.conf를 백업한 뒤, [global] 섹션에 아래 항목을 추가하고 파일 끝에 공유를 정의합니다.
[global]
server min protocol = SMB2_02
log level = 1 auth_audit:3
interfaces = lo
bind interfaces only = yes
[labshare]
path = /srv/labshare
valid users = smbtest
read only = no
server min protocol = SMB2_02: SMB1 접속 거부 (최신 Samba 기본값과 같지만 명시적으로 확인)auth_audit:3: 인증 성공·실패를 로그에 남김interfaces = lo + bind interfaces only = yes: 실습용으로 루프백에서만 리슨testparm -s # 문법 검사
sudo systemctl restart smb # Ubuntu: sudo systemctl restart smbd
sudo ss -tlnp | grep -E ':(445|139) '
# 터미널 1
sudo tcpdump -i lo -nn 'tcp port 445'
# 터미널 2: 공유 목록 → 공유 접속 → 파일 업로드
smbclient -L //127.0.0.1 -U smbtest
echo "lab" > /tmp/lab.txt
smbclient //127.0.0.1/labshare -U smbtest -c 'put /tmp/lab.txt lab.txt; ls'
# 일부러 틀린 비밀번호로 한 번 시도 (실패 로그 확인용)
smbclient -L //127.0.0.1 -U smbtest
📷 [실습 화면 삽입]
smbclient -L결과(labshare, IPC$ 표시)와ls결과
sudo smbstatus # 현재 연결·세션·열린 파일
sudo grep -h "Auth:" /var/log/samba/log.* | tail -n 5
📷 [실습 화면 삽입]
smbstatus출력의 Protocol Version(SMB3_11 등)과 접속 공유,Auth:로그의 성공/실패 줄
sudo systemctl disable --now smb # Ubuntu: smbd (nmbd도 설치되었다면 함께 중지)
sudo smbpasswd -x smbtest && sudo userdel smbtest
smbstatus (형식 예시(값은 환경마다 다름))
PID Username Group Machine Protocol Version Encryption Signing
-------------------------------------------------------------------------------------------
4412 smbtest smbtest 127.0.0.1 (ipv4:127.0.0.1:50122) SMB3_11 - -
Service pid Machine Connected at
------------------------------------------------
labshare 4412 127.0.0.1 Sat Sep 26 13:10:22 2026 KST
IPC$ 4412 127.0.0.1 Sat Sep 26 13:10:22 2026 KST
인증 감사 로그 (형식 예시(값은 환경·버전마다 다름))
Auth: [SMB2,(null)] user [WORKGROUP]\[smbtest] at [Sat, 26 Sep 2026 13:10:22 KST] with [NTLMv2] status [NT_STATUS_OK] workstation [LAB] remote host [ipv4:127.0.0.1:50122] ...
Auth: [SMB2,(null)] user [WORKGROUP]\[smbtest] at [Sat, 26 Sep 2026 13:11:05 KST] with [NTLMv2] status [NT_STATUS_WRONG_PASSWORD] workstation [LAB] remote host [ipv4:127.0.0.1:50130] ...
점검 체크리스트
server min protocol)이고 협상 버전이 SMB2 이상인 것을 확인했다smbstatus로 사용자·출발지·접속 공유를 확인했다NT_STATUS_OK)과 실패(NT_STATUS_WRONG_PASSWORD) 로그를 비교했다IPC$가 함께 보이는 이유를 이해했다| 관찰 | 정상일 수 있는 경우 | 의심해야 하는 경우 |
|---|---|---|
| PC → 파일 서버 445 | 일상적인 공유 폴더 사용 | 업무 외 시간 대량 읽기(유출), 대량 쓰기·이름 변경(랜섬웨어) |
| PC → PC 445 | 드묾(개인 공유 폴더 등 예외) | 한 PC가 짧은 시간 여러 PC의 445로 접속 = 확산·탐색 징후 |
C$/ADMIN$ 접근 | 관리 서버·관리자 PC에서 배포 작업 | 일반 사용자 PC에서 발생, 업무 외 시간 |
| 인증 실패 다수 | 비밀번호 만료 후 매핑 드라이브 재시도 | 여러 계정·여러 대상에 대한 연속 실패 |
| SMB1 협상 | 레거시 장비(구형 복합기 등) 식별 필요 | 최신 PC가 SMB1로 접속 시도 (취약점 악용 도구 가능성) |
| 외부 ↔ 445 | 없어야 함 | 인터넷에서 445 도달 가능 = 즉시 차단 대상 |
# 이 서버로 들어온 445 세션 출발지 집계
sudo ss -tn state established '( sport = :445 )' | awk 'NR>1{split($4,a,":"); print a[1]}' | sort | uniq -c
# 출발지별로 SYN을 보낸 '서로 다른 목적지 수' (게이트웨이·미러 포트에서 캡처 시)
sudo tcpdump -i ens33 -nn -c 300 'tcp dst port 445 and tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0' \
| awk '{split($3,s,"."); split($5,d,"."); print s[1]"."s[2]"."s[3]"."s[4], d[1]"."d[2]"."d[3]"."d[4]}' \
| sort -u | awk '{print $1}' | sort | uniq -c | sort -rn
# Samba 인증 실패만
sudo grep -h "Auth:" /var/log/samba/log.* | grep -v NT_STATUS_OK
실습 환경에 Windows는 없으므로 아래는 참고용입니다. 공유 접근 이벤트(5140, 5145)는 감사 정책에서 "파일 공유 감사", "세부 파일 공유 감사"를 켜야 기록됩니다.
| 이벤트 ID | 로그 | 의미 |
|---|---|---|
| 4624 (Logon Type 3) | Security | 네트워크 로그온 성공 (SMB 접속 인증 등) |
| 4625 | Security | 로그온 실패 |
| 5140 | Security | 네트워크 공유 개체 접근 (공유 이름, 출발지 IP) |
| 5145 | Security | 공유 내 파일 단위 접근 검사 (양이 많음) |
| 7045 | System | 새 서비스 설치 (원격 서비스 등록 흔적) |
"4624 Type 3 → 5140(ADMIN$) → 7045"가 같은 시간대, 같은 출발지로 이어지면 위 3-2의 원격 실행 패턴과 일치합니다.
흔적이 남는 곳
| 위치 | 남는 정보 |
|---|---|
| 내부 방화벽·세그먼트 경계 | PC ↔ PC, VLAN 간 445 세션 (내부 통제가 있을 때만) |
| IDS/IPS | SMB1 취약점 악용 시그니처, 관리 공유 접근 룰 (06. 방화벽 · IDS/IPS 분석 시리즈에서 다룸) |
| Windows 보안 로그 | 4624/4625/5140/5145/7045 |
| Samba 서버 로그 | 인증 감사(Auth:), 클라이언트별 로그 |
| EDR | 원격 서비스 생성, 관리 공유 경유 파일 생성 프로세스 |
관제 시 핵심 포인트
한계와 오탐 주의
ADMIN$에 파일 복사 → IPC$로 서비스 등록 방식으로 내부 확산하며, 이는 정상 관리 도구 동작과 같아 "누가 어디서"가 판단 기준입니다.auth_audit 로그가 핵심 흔적입니다.