250527 웹쉘 악성코드 분석 1-1
파일명 : fixed_truckit.tar( FIXED_TRUCKIT, passwd.bak, phpp )
Kali Linux 환경(tunnel)
1. 우선, 어떤 라이브러리에 의존하는지, 어떤 함수명을 쓰고 있는지, 실행 보호 기능이 있는지 확인 한다.
기입(목적)
file phpp ( ELF 파일인지 확인 )

- ELF 확인 ( 즉, 실행가능 의미 )
- not stripped( 심볼[함수명 등] 정보가 살아 있음을 확인 )
- dynamically linked( 외부 라이브러리에 의존하는 것으로 확인 )
ldd phpp ( 외부 라이브러리 확인 - 시스템 의존도 체크 )

- libc 확인( 이는 기본적이지만 libssl, libcurl 등 네트워크/암호화 관련 의존성 확인이 가능 )
strings phpp | less ( 바이너르 내의 유의미한 문자열 추출 - 에러 메시지, 파일 경로, 함수 이름 등 )

- /bin/sh, execve, setresuid 확인( 쉘 실행 및 권한 상승 가능성 )
- .pkexec, gconv 확인( CVE-2021-4034{PwnKit] 의심)
- rmrf, nftw 확인( 파일 삭제 의심 )
readelf –h phpp ( 심볼 테이블 확인 – ELF 헤더 확인용 )

- 클래스 : ELF64 또는 ELF32로 확인
- 타입 : DYN, EXEC, REL 등으로 확인
- 엔트리 포인트 주소로 확인
readelf –s phpp ( 섹션 확인 )

- FUNC항목 중 main, remove, fork, service_interp 등을 찾아 분석 포인트로 삼는다.
checksec —file~phpp ( 보안 보호기법이 적용되었는지 확인 – 스택보호, PIE, RELRO 등 으로 분석 난이도 판단)

- RELRO (NO) - GOT(함수 주소 테이블) 보호 없음 -> GOT Overwrite 취약 가능
- STACK CANARY (NO) - 스택 보호 없음 -> 버퍼 오버플로우 발생 시 스택 깨기 가능
- NX – 스택에 실행 권한이 없음 -> 쉘코드 실행 어렵지만 ROP 등 우회 가능
- PIE (DSO) - 위치 종립 실행 불가 -> 코드 주소가 고정되어 있어 리버싱과 Exploit 더 쉬움
- RPATH/RUNPATH (no) - 동적 라이브러리 로딩 경로 설정이 없음 -> 문제가 될 것은 없다.
- Symbols (84 Symbols) - 심볼 정보는 존재 -> 함수명/전역변수명 확인이 가능(리버싱에 수월)
- FORTIFY (NO) - 안전 함수 미사용 -> sprintf 등 위험한 함수 그대로 사용 가능
- Fortifiable (3) - 원래는 보호 가능한 함수 3개가 있음 -> 적용되지않음
2. 디버깅 환경 구축
gdb ./phpp (디버깅 환경구축)

execve. fork 등 시스템 호출 감시
- 실제 실행 중 어떤 함수가 호출되는지.
- 환경 변수나 경로가 필요한지 확인 가능.
3. 리버싱 분석
Cutter 설치 및 분석
sudo apt install cutter
cutter phpp

- 함수 단위로 분석 가능
- 흐름도 보기 가능 ( Control Flow Graph )
- main 함수 없을 경우 entry0로 진입
분석결과
- gconv 경로를 설정하여, pkexec를 악용하는 것으로 확인. (CVE-2021-4034)
- setresuid로 권한 상승 시도
- execve로 쉘 실행 유도
- 불필요한 파일 삭제 루틴 포함 확인
- 권한 상승 Exploit 확인.