2022. 2. 20. 02:07ㆍ보안 연구/Reversing
본 티스토리 블로그는 PC 환경에 최적화되어 있습니다.
모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.
안녕하세요, ICMP입니다!
오늘 분석할 멀웨어는 ELF 파일로 디도스 공격을 감행하는 녀석입니다.
다행히도 함수 심볼도 남아있고 난독화나 패킹도 없어 분석 난이도도 높지 않으니 한번 파일을 부검해 보도록 하겠습니다.
1. 파일 정보
이번에 분석하면서 특이했던 점이 gdb로 중단점을 걸어도 먹히질 않고 재밌게도 해커가 분석가들을 욕하는 듯한 문구도 있었습니다!!!
역시, 코드가 멀쩡히 나와서 쉬울 거라 했는데, 조금 긴장하는 자세로 임해야 할 듯합니다...
2. 정적 분석
우선 제가 확인한 동작들의 큰 그림을 먼저 확인해 보도록 하겠습니다.
공인 아이피 91.209.70.22에 59번 포트 연결을 먼저 확립해 놓고 그 서버 주소로 DDos 공격을 날리는 방식으로 확인되었습니다.
공격 코드는 recv_buf 함수 내부에서 확인할 수 있으나 소스코드가 양이 많아서 다음 포스팅에 게시하도록 하겠습니다.
1) 희생자 ip 정보
2) local_addr() -> 감염 PC의 아이피 정보 수집
3) signal(17LL, 1LL) && signal(1LL, 1LL)
이건 해커가 세팅해놓은 설정 중 하나인데, signal 17번 1번은 자식 프로세스가 종료되거나 프로세스를 제어하는 터미널이 닫힐 때 보내지는 신호입니다.
그런데, signal 함수 두 번째 인자에 1이 들어가는 것은 ignore 옵션이며, 자식 프로세스가 종료되거나 터미널 창이 닫히더라도 무시하라는 설정을 추가한 것입니다.
4) fork() -> encryption_init() 호출
encryption_init() 함수 정의를 보시면 아래와 같습니다.
이건 후에 나올 recv_buf에서 활용될 옵션을 그냥 전역 변수에다가 저장해놨다고 생각하시면 편합니다.
특별한 기능은 없기 때문에 다음으로 넘어가도록 하겠습니다.
5) connection() 호출
6) registermydevice()
연결 성공 시 해당 정보를 전역 배열에 저장하는 함수라고 생각하시면 됩니다.
여기서 기록된 전역 배열 정보를 통해 recv_buf에서 DDos 공격 및 설정에 활용됩니다.
코드를 보다가 "\x1B[0m\x1B[0;31m[\x1B[0;36m%s\x1B[0;31m]\x1B[0m Device Joined [Host:%s] [Arch:%s] [Name:%s]\x1B[0m\r\n"가 어떤 포맷으로 출력되는지 확인해 보려고 간단히 코딩해 보니 다음과 같이 확인되었습니다.
7) recv_buf()
여기가 코드의 핵심 부분이라고 볼 수 있습니다.
함수 이름에 해당 기능들이 전부 표현되어 있어서 추가적인 언급은 하지 않지만 cmd_parser의 경우 보다 세부적인 공격을 진행하는 코드가 존재합니다.
전역 배열에 저장된 값을 불러와 문자열을 검색한 뒤 각각 프로세스를 다시 생성하고 해당 자식 프로세스가 지정된 DDos 공격을 감행하는 방식인 듯합니다.
현재 해당 코드에서 구현해 놓은 방식의 DDos 공격 기법은 STD, UDP, VSE, GRE, TCP(all, syn, ack, urg), Xmas, Http이며, 이들을 모두 다루기에는 길이 길어져서 다음 포스팅에 다루도록 하겠습니다.
이상! ICMP였습니다!
감사합니다!
'보안 연구 > Reversing' 카테고리의 다른 글
YARA rule - AgentTesla (2) | 2022.02.25 |
---|---|
악성코드 분석일지 - corona ddos bot(2) (0) | 2022.02.21 |
악성코드 분석일지 - AgentTesla(진행 중) (0) | 2022.02.17 |
프로젝트 5일차 (0) | 2022.02.14 |
바이너리 언패킹(2) - 압축과 엔트로피 (0) | 2022.02.01 |