# 프로그램의 이상 동작 탐지에 이번 수업의 목적이 있다.
지난 며칠간 리버싱 기초와 프로그램 포멧에 대해 배웠지만, 실무에서는 리버싱으로 프로그램 코드 하나하나 뜯어볼 필요가 거의 없다고 하셨다. 왜냐하면 악성 코드 취약점 발생 시 가장 중요한 것은 회사 피해를 줄이는 것이지, 코드 분석이 아니기 때문이다. (그래서 리버싱만 하는 직무를 뽑기 어렵다고.ㅎ)
이미지 출처: www.quest.com/community/blogs/b/data-protection/posts/the-3-c-s-of-data-protection
'데이터 보호의 3C' 라는 제목의 블로그 글이다.
여기에서 왼쪽의 도표는 Cost와 RPO, RTO의 상관관계를 설명하기 위하여 쓰였다. 평소 보안에 비용을 많이 쏟아부었으면 PRO와 PTO가 짧아지고-데이터 손실이 준다. 돈을 안쓰면 피해시간도 늘어나고, 복구 시간도 늦어진다...ㅎㅎ 그래서 저자는 그 두 그래프가 만나는 파란 표시가 이상적인 솔루션이라고 제시한다.
* RPO (Recovery Point Objective, 목표 복구 시점)
* RTO (Recovery Time Objective, 목표 복구 시간)
어쨌든 결론은 악성코드 분석시 중요한 것은 리버싱 코드 찬찬히 뜯어보며 분석하는 것 보다는, 피해를 줄이기위하여 빠른 시간 내에 악성 코드의 동작을 파악하고 대처하는 것이다.
# 이를 위하여 프로그램 동작 시 port -> service -> process를 살펴볼 필요가 있다.
오늘 정말 다양한 프로그램을 살펴봤는데 간략히만 정리해 두겠다.
- process explorer : PPID, PID , strings, DLL, handle 확인 가능
- process monitor : 필터링 기능이 있어서 프로그램을 실행 하기 전에 registry , 파일 등의 정보를
프로그램 실행 시 필터링 해서 필요한 부분만 용이하게 분석할 수 있게 도움을 줌
- tcpview : 소켓 오픈시 열린 포트와 프로토콜을 확인할 수 있다. 다만, shvchost 같은 프로세스는 보통 dll 통해 서비스가되는 건데 실제 동작 시키는 정보를 보기위해서는 process explorer 랑 같이 사용해야한다. 아래 이미지를 보면, svchost.exe를 실제로 동작시키는 서비스를 알기 어렵다.
- autoruns : registry는 응용프로그램의 database인데, autoruns는 그 registry 목록 중 부팅 시 자동으로 시작 할 수 있는 registry정보만 따로 보여준다. 즉 malware의 presistent기능을 체크해 볼 수 있다.
Process Explorer, Process Monitor, TcpView, autoruns 다운로드하러 가기 (링크)
- sysanalyzer : 동적 분석 자동화 도구. 다운로드 -> sandsprite.com/iDef/SysAnalyzer/
# 추가로, malware 분석 사이트 소개
+ 전 세계 보안 위험 트래픽 실시간 MAP 볼수 있는 사이트 (너무 아름답고 황홀하니 시간나면 들어가서 보세여 굿굿)
# 간단한 악성 프로그램 만들기
nc을 bat 파일로 만들어서 cmd 권한 탈취하기 (준비물 : netcat 실행파일, 파이썬, exe2hex)
exe2hex-master 다운받으러 가기 (깃허브로 이동)
- exe2hex를 활용하여 netcat 배치파일을 만든다.
- 공격자 PC에서 netcat 포트열고 기다린다
- 피해자 PC에서 netcat 배치파일 실행하면, 공격자 PC에 접속이된다.
1. exe2hex를 활용하여 netcat 배치파일을 만든다.
2. 공격자 PC에서 netcat 포트열고 기다린다.
3. 피해자 PC에서 nc.bat 실행
이후 CyberGate 라는 악성코드 프로그램으로 악성코드 배포 모의실습을 진행해보았다.
리버싱보다는 악성코드 탐지 실전에 가까운 실습을 할 수 있었던 것 같다.
'[혁신성장 청년인재] 인공지능을 활용한 보안전문가 양성과정' 카테고리의 다른 글
Day45: 두번째 멘토링 (0) | 2020.09.13 |
---|---|
Day50: 악성코드 초기분석 실습 | 정적 분석 4개 (0) | 2020.09.12 |
Day48: 기초리버싱 | PE file format | UPX 실행압축 (0) | 2020.09.09 |
Day47 : 리버싱 기초 학습 | 리틀엔디언 표기법 | 스택 | 스택 프레임 | 함수호출규약(stdcall, cdecl, fastcall) | 휴식 (0) | 2020.09.09 |
Day46 : 악성코드 분석을 위한 리버싱엔지니어링 기초 학습 (0) | 2020.09.08 |