CodeEngn malware 02

코드엔진 malware 02번 문제풀이

두 번째 악성코드 분석 문제풀이다. 이 코드의 길이도 길기 때문에 구간을 나눠서 분석을 해봤다.

mal2

첫 번째 구간을 살펴보면 body배열에 문자열 값을 넣는 게 보이고 아래를 살펴보면 9번 라인에서 12번 라인까지 호스트의 80번 포트를 스캐닝 하는 것을 볼 수 있었다.

mal2-1

두 번째 구간을 살펴보면 IPv4 TCP stream 소켓을 생성하고 sockaddr_in구조체를 가지는 ssin를 생성하여 0으로 초기화 한 뒤에 IPv4 주소체계와 80번 포트를 설정하고 호스트 IP를 할당하였다. 그리고 30번 라인부터 37번 라인까지의 실행으로 szShellBuf에 쉘코드를 삽입하는 것으로 보인다.

mal2-2

마지막 3번째 구간을 분석해보면 szReqBuf에 HTTP헤더와 body(위의 배열 안에 들어있는 값)를 붙이고 그 아래에 쉘 코드를 붙이는 것을 확인할 수 있었다. 코드를 토대로 szReqBuf에 들어간 값을 구현해 보면 아래와 같다.

mal2-3

DAV라는 문자가 눈에 띄어 구글링을 해보니 WebDAV라는 게 있었다.

WebDAV란 HTTP의 확장으로 월드 와이드 웹 서버에 저장된 문서와 파일을 편집하고 관리하는 사용자들 사이의 협업을 손쉽게 만들어준다고 위키에 나와있었다.

위 코드는 취약한 WebDAV에 접근하여 서버에 쉘 코드를 올리는 것 같다.