wonder
정보보안 스터디 - 21주차 2일 - 백도어 분석 본문
오늘은 backdoor.exe에 대해서 분석해봤습니다.
☞ 백도어란
백도어란 뒷문이라는 뜻으로 정상적인 방법으로 접근하지 못하기 때문에 취약한 서비스 포트를 이용하거나 리슨상태로 만들어서 침투하는 것을 말합니다.
피해자 측에서 실행시켜 tcp 포트를 리슨상태로 만들고
그 포트에다가 공격자가 들어갈 수 있도록 공격자가 연결을 합니다.
그 후에는 파일dump라던지, 정보수집, 다운로더 및 악성파일을 집어넣는다던지 쉘을 장악하여 사용할 수 있는 것을 말합니다. (시스템 제어- 그래픽 제어 등)
이때까지 배운 reverse_tcp도 백도어라고 할 수 있습니다.
단발성으로 침투하는 것이 있고 / 레지스트리, 서비스, 시작프로그램 디렉토리 등록하고 잠입하여 쭉 영향을 끼치는 방식으로 나뉩니다.
테스트를 위해서
win7 측이 공격자 = backdoor.exe실행 하여 리슨 상태 만듭니다.
winxp 측이 피해자로 = connectbackdoor.py
파이썬 코드를 실행하여 공격자측으로 리슨하도록 네트워크 설정을 합니다.
☞ 기초 분석
1~7단계 기초 분석부터 시작합니다.
기초 정적 분석 > 패킹은 되어있지 않습니다.
참고로 분석이 적응되고 나면, 나중에는 꼭필요한 부분만 IAT부분만 보게됩니다. 그렇게 해도 좋습니다.
PEVIEW, dependency walker 분석을 해보니
파일 관련된 것 먼저 포면 writefile, readfile이 있습니다. readfile이 있는 이유는 cmd 명령어를 입력해 공격자 시스템으로 내용이 전송되므로 읽고 쓰기를 해야 명령이 실행됩니다. |
createprocess, thread 실행 관련이며 createpipe는 연결하는 것입니다. 데이터 복사나 네트워크 입출력 연결할 때 사용합니다. |
wsocket.dll이 눈에 보입니다. ws~.dll와 마찬가지로 소켓 연결에 대한 부분입니다. 거의 구성이 비슷해서 처음에 WAStartup send .. socket - 소켓을 생성합니다. 마지막에 WACleanup 등 로 이루어져있습니다. 소켓 생성한다는 부분이 가장중요합니다. |
createmutex 뮤텍스를 생성하고 오픈하는 것은 안보입니다. |
showwindows 윈도우창을 숨기는 역할을 합니다. |
python코드를 을 보니 1337포트를 열고 sent, recv 가 반복되면서 데이터를 주고받겠다는 것입니다.
strings를 확인해보니
파일 다운로더도 아니고
cmd.exe 실행하여 쉘 연결이기 때문에 별로 볼 게 없습니다.
파일 다운로더라면 파일 다운로드할 주소라든지 파일 이름이 나왔을 텐데
많이 없습니다.
동적분석
일단 sysanalyzer로 동적분석을 같이 진행하면서 실행하겠습니다.
따라서 파이썬 파일을 열어 리슨상태로 만들어주고
파이썬으로 edit with IDLE 로 열어 F5로 실행해주면
연결이 되어 쉘 사용이 가능합니다.
멸령어 요청/ 응답을 확인합니다.
실행 시 loggin to file > cmd가 실행되는 것을 중요하게 봐야합니다.
패킷 캡쳐 내용을 보면 3way handshaking을 하고 push로 데이터(명령어 요청/응답)를 주고 받고 있습니다.
또한 follow TCP stream을 따라가 보면 명령어 요청/응답 내용까지 볼 수 있습니다.
아마 이미 네트워크 연결이 established 되어서 리슨상태라면
중복으로 적용은 안될 것 입니다.
바이러스 토탈에 넣어보니
trojan 트로이목마로 나옵니다.
어짜피 다운로더나 드롭퍼나 대부분의 악성파일은 정상적인 척하지만 악의적인 파일이라
거의 트로이목마로 뜬다고 생각하면 됩니다.
표준 기준없이 회사 각자의 기준으로 정확한 명칭을 알려주지 않는 경우가 많습니다.
☞ 고급 분석
IDA 분석은 함수명 위주로 분석합니다.
처음
getconsolewindow 후
창을 숨깁니다.
mutex를 생성합니다.
소켓 리슨을 합니다.
WSAstartup
socket
bind - 소켓 만들기 성공하면 포트지정하여 생성 1337
소켓을 만들긴 하지만
포트에 기존 연결이 있다면 없어질 때까지 1초간격으로 루프를 돕니다. 즉 연결을 계속 시도합니다.
그 다음 startaddress 주요 함수를 클릭해서 들어가 보면
복잡해보이긴한데 연결되었을 때 입/출력을 실시합니다.
createpipe여러번 시도하고
push cmd
createprocess
readfile 이 있습니다.
ollydbg 동적분석
win7에서 olly분석이안되서 (메모리 주소가 바뀌고 해서) winxp에서 분석합니다.
메인주소로 들어가 BP를 걸고 실행합니다.
또 두번째 시작함수로 BP를 걸고 F9로 들어가려고하는데 바로 되지 않습니다.
그럴 경우에는 python을 IDLE로 실행하면 그 주소로 이동돼 있습니다.
또 여기서 ifconfig 같은 명령어를 입력한 후
F8로 계속 진행합니다. 루프가 보이는데 ctrl+F8로 자동으로 실행되게 한 후 루프가 끝날 때까지 기다립니다.
루프가 명령어 응답이 화면에 출력됩니다.
테스트 점검 후에는 윈도우에서 연결을 삭제하려고 한다면
netstat -no
pskill -t 1337연결된 번호
프로세스 종료합니다.
'Security > 리버싱' 카테고리의 다른 글
정보보안 스터디 - 21주차 1일 - 문서형 악성파일 (1) | 2023.03.04 |
---|---|
정보보안 스터디 - 21주차 1일 - 악성코드 난독화 (0) | 2023.03.04 |
정보보안 스터디 - 20주차 6일 - 문서형 악성파일 상세연구2 (2) | 2023.03.01 |
정보보안 스터디 - 20주차 5일 - 문서형 악성파일, 난독화 방법 (2) | 2023.02.28 |
정보보안 스터디 - 20주차 2일 - 악성파일 분석 상세연구3 (1) | 2023.02.24 |