DINGA DINGA
article thumbnail
728x90

1. Fuzzing

Fuzzing: 랜덤한 인풋을 생성하여 프로그램의 버그를 찾는 기술

 

BFF

- Black box fuzzer의 일종

- Basic Fuzzing Framework

- 시드를 제공하고 간단한 설정 파일을 건드리는 것만으로도 퍼저를 돌릴 수 있음.

 

- 국내 소프트웨어 32개를 대상으로 퍼저를 대략 1일 정도 돌린 결과 총 25개의 프로그램에서 유의미한 crash를 찾을 수 있었음. 이 crash들을 분석해 Buffer Overflow, Integer Overflow, Double free등의 취약점을 확인함.

 

AFL

- Coverage based fuzzer의 일종

- Code coverage를 이용하여 input을 smart하게 생성

- GUI 프로그램은 종료 시점이 정해져 있지 않기 때문에 coverage based fuzzing이 어려움. 이 문제를 해결하기 위해 라이브러리에서 핵심 함수만 가져와서 실행하는 harness를 만들어야 함.

 

핵심 target 함수를 찾는 방법: 파일이나 패킷을 분석하는 함수, 공격자가 인자를 마음대로 제어할 수 있는 함수, Entry point에 해당하는 함수를 선택할 수 있음.

 

Target 함수를 import해서 실행하는 프로그램 만들기

- Load Library

- Get input

- Execute function

 

- AFL에서는 소스 코드가 없는 경우 Qemu를 통해 커버리지를 수정하는데, 실행되는 코드가 AFL start 코드와 end 코드 사이에 있을 경우에만 커버리지가 들어감.

- 따라서 두 변수를 target 라이브러리가 로드된 주소의 시작과 끝으로 설정해야 커버리지 측정 가능

 

- 두 변수를 설정한 후 퍼저를 돌리면 정상적으로 작동함

- 일주일 정도 퍼저를 돌린 결과, BFF에서는 한 개의 crash도 찾을 수 없었던 프로그램에서 7개의 취약점 발견

 

2. IDA python

IDA python: IDA에서 정적 분석을 위해 지원하는 파이썬 플러그인. IDA에서 분석된 결과를 파이썬으로 가져올 수 있음.

- 장점: Fuzzing보다 빠름. Non-Memory-corruption 버그도 찾을 수 있음.

- 단점: 복잡한 형태의 코드 구조를 가지고 있으면 분석이 어려움.

- 간단한 구조를 가진 프로그램에 유리

 

CGI에서 Stack buffer overflow 찾기

- 지역 변수 정보 가져오기: 변수의 이름, 타입, 사이즈 등을 로컬 리스트에 저장

- user input 변수 정보 가져오기: 대부분의 IOT web 페이지 실행 파일에서는 유저의 input을 parsing하기 위한 함수가 정해져 있음. 라이브러리 함수를 쓰지 않고 직접 구현한 경우 리버싱 필요.

- target 함수 인자 정보 가져와 args 리스트에 저장하기

- 취약점이 발생하는지 체크: dest 사이즈보다 source 사이즈가 크면 스택 버퍼 오버플로우가 발생한 것으로 파악

 

3. Monitoring tools

Windows: process monitor

Linux: Itrace, strace, Gdb script

 

- LPE 취약점을 쉽게 찾을 수 있음

- Target: Root process (Linux), System(admin) process (Windows)

- 타깃 프로세스가 하는 행위 관찰

 

Execute file

- 높은 권한을 가진 프로세스가 다른 프로그램을 실행시키는 경우 경로에 일반 유저도 쓰기 권한이 있다면 해당 파일을 수정하는 것으로 관리자 권한 탈취 가능

 

Read file

- 해당 벡터를 공격 벡터로 사용할 수 있게 됨

 

Write file

- 루트 권한을 가진 프로세스가 파일을 쓸 때 해당 경로의 다른 파일로 심볼 링크를 걸면 루트 권한으로 임의의 파일을 수정할 수 있음

 

Load Library

- 일반 유저에게 쓰기 권한이 있는 폴더에서 DLL을 로드하려고 하면 DLL 하이재킹이 발생하는데, 필터링을 통해 DLL을 찾는 과정을 모니터링할 수 있음

728x90