jaewoo shim may. 02. 2018 - dankooksecuresw.dankook.ac.kr/iss18-1/hw4_2018_05_02.pdf ·...
TRANSCRIPT
팀프로젝트 부연설명
Jaewoo Shim
May. 02. 2018
목차
동적 분석 실습
Lightaidra 최종보고서 작성 안내
정적 분석 예시
2
동적 분석 실습
개별 리눅스 사용 권장
자신의 리눅스가 ubuntu일 경우 환경구성(관리자 권한으로)
# apt install git
# apt install gcc
# apt install make
자신의 노트북에 리눅스가 없을 경우 실습서버 사용
ip : 172.25.235.247
id : guest
pw : guest
3
동적 분석 실습
lightaidra 다운로드
$ cd /tmp/자기학번
$ cd 자기학번
$ git clone https://github.com/eurialo/lightaidra
$ cd lightaidra
4
동적 분석 실습
config.h 파일 수정
$ vi include/config.h
5
동적 분석 실습
config.h 파일 수정
background_mode
악성코드는 자신의 실행을 숨기기 위해서 실행 이후 백그라운드로 숨어버림
이러할 경우 분석 시 어려움이 있을 수 있음
main.c : background_mode 변수의 값에 따라 daemonize 여부를 결정
6
동적 분석 실습
config.h 파일 수정
irc_servers
Irc 서버에 대한 아이피주소와 포트번호를 기입
파이프 기호 “|”를 이용하여 여러 주소를 지정하는 것 또한 가능
passproto
IRC 프로토콜에서 사용하는 값 : 변경하지 마세요
irc_passwd
irc 서버 접근 시 비밀번호가 필요할 때 사용하는 변수
본 실습서버는 난이도 하락을 위해서 비밀번호가 없음 : 변경 X
프로젝트를 위해 제공된 irc 서버
ip : 172.25.235.251
port : 6665, 6666, 6668, 6669
7
동적 분석 실습
config.h 파일 수정
encirc, enc_servers, enc_passwd
만약 컴파일된 악성코드를 분석가가 수집 시, 통신하는 서버의 정보를 쉽게 알 수 있다는 단점이 존재(악성코드 제작자 입장에서의 단점)
따라서 이를 보다 어렵게 하기 위하여 사용하는 서버주소 암호화 설정
본 과제의 의도에서는 해당 암호화루틴을 고려하지 않음 : 수정 X
8
동적 분석 실습
config.h 파일 수정
irc_chan
악성코드가 irc 서버에 접속한 이후 접속을 수행할 채널명
“#채널명“ 의 형식대로 자신이 원하는 채널명으로 변경
(주의) 이후 hexchat을 이용하여 대화방을 만들 때 해당 이름으로 대화방을 제작해야하므로 반드시 자신이 기입한 채널명을 기억하고 있기
9
동적 분석 실습
config.h 파일 수정
irc_chankey
공격자가 생성한 대화방은 공격자의 의사에 따라 비밀번호를 설정하여 다른 사람의 접근을 막을 수 있음
이 때 악성코드가 원활히 접속할 수 있도록 설정하는 대화방 비밀번호
본 실습에서는 대화방을 생성 시 비밀번호를 설정하지 않기 때문에 그대로 유지
10
동적 분석 실습
config.h 파일 수정
master_host, master_password
lightaidra는 공격자의 대화방에 접근한 이후 대화방 참여자 중 누가 자신의 주인인지 확인이 필요 : 해당 주인의 말만 듣기 위함
이를 식별할 수 있는 아이디와 비밀번호가 필요 : 로그인과정
master_host : 아이디
“@공격자ip주소” 의 형태로 작성
master_password : 비밀번호
원하는 비밀번호 입력
11
동적 분석 실습
악성코드 빌드
Makefile 파일을 확인해보면 컴파일 후 파일이 저장되는 경로를 확인 가능
12
동적 분석 실습
악성코드 빌드
$ mkdir bin
$ make x86_64
몇가지 경고문구와 함께 에러없이 빌드되었다면 컴파일 성공
$ cd bin
$ ls
x86_64 라는 이름의 파일이 생성되었다면 악성코드 제작 완료
13
동적 분석 실습
대화방 생성
Hexchat 다운로드
https://hexchat.github.io/downloads.html
14
동적 분석 실습
대화방 생성
15
동적 분석 실습
대화방 생성
16
더블클릭하여 수정 후 엔터 아이피주소 : 172.25.235.251/6666
수정 완료 후 close
동적 분석 실습
대화방 생성
오른쪽 과같이 접속이 수행되는 것을 확인
17
두번째 join the channel 에 본인이 생성할 대화방 이름 입력
동적 분석 실습
대화방 생성
아래와 같이 대화방이 생성되면, 악성코드가 접속될 대화방 생성 완료
18
동적 분석 실습
악성코드 실행
아래와 같이 실행되는 모습 확인
19
동적 분석 실습
악성코드 실행
대화방에 랜덤한 이름을 가진 익명의 사용자가 접속되는 것을 확인
해당 사용자가 악성코드
20
동적 분석 실습
악성코드 로그인해보기
채팅창에 아래와 같이 커맨드 입력
.login 비밀번호(앞서 config.h에서 입력넣은 비밀번호)
21
동적 분석 실습
악성코드에 감염된 서버에 임의 커맨드 전달해보기
채팅창에 .help라고 입력하면 사용 가능한 커맨드를 확인 가능
채팅창에 아래와 같이 입력
.exec ls
.exec id
.exec 자신이 원하는 커맨드
팀 프로젝트를 위한 악성코드의 동적분석 완료
해당 사항까지 정리하여 최종보고서에 반영
22
동적 분석 실습
주의사항 및 특이사항
가급적 자신의 가상환경(고립된 환경)이 갖추어지지 않는 이상 악성코드의 다른 커맨드는 자제해주세요.
본 실습에서 사용한 환경(컴파일환경)은 외부에서는 접근되지 않습니다.
23
Lightaidra 최종보고서 작성 안내
양식 및 분량 – 자유
팀 별로 1부 제출
보고서에 반드시 포함되어야 하는 내용
제안서에 기입했던 내용들
환경과 도구는 분석 시 다르게 이용했을 경우 실제 사용한 내용을 작성
소스코드 분석 내용(소스코드 주석달아 제출하지 마세요 - 감점)
각 *.c 파일의 역할 – 무슨 기능을 하는지?
각 함수의 역할 – “~기능을 수행하는 함수이다.”
컴파일 후 실행 내용
어떤 기능을 수행하는 악성코드인지?
어떤 식으로 동작하는지?(자세하게)
어떤 분석환경을 어떻게 갖추어 어떻게 실행시켜 확인했는지?
결론
이 악성코드는 어떤 환경에서 무슨 기능을 수행하는 악성코드다.
내가 보안 담당자라면 어떻게 해당 악성코드를 탐지 및 차단할 것인지?
5월 16일(수) 까지 연기
24
Lightaidra 최종보고서 작성 안내 - 예시
attack.c : lightaidra가 사용하는 공격 커맨드 중 synflood, ackflood, ngsynflood, ngackflood 기능의 소스코드가 포함
synflood() : tcp 패킷을 구조체 형식에 맞추어 제작하여 무한루프를 돌며 synflood 공격을 행한다. synflood 공격이란 ~~~~~~~~~~~~~~~것이다.
ackflood() : 앞서 설명한 synflood()와 유사한 코드 흐름을 보인다. Ackflood 공격이란 ~~~~~~~~~~~~~~것이다.
ngsynflood() : synflood()와 동일한 코드로 작성되어있다.
…
requests.c : 공격자로부터 전달받은 커맨드를 분석하여 각각의 역할을 수행할 수 있는 소스코드가 포함되어있다.
pub_requests() : 사용자로부터 전달받은 커맨드가 어떠한 커맨드인지 확인하여 역할에 맞는 함수를 호출하는 기능을 수행한다.
…
25
26