혜랑's STORY

2021 CodeEngn Conference 17 | 샌드박스 시대의 종결: AI 에뮬레이터 시대의 도래 본문

카테고리 없음

2021 CodeEngn Conference 17 | 샌드박스 시대의 종결: AI 에뮬레이터 시대의 도래

hyerang0125 2021. 7. 7. 20:42

1. 도입
- 인터넷, 고객사를 통해 모은 악성코드 샘플이 너무 많다! 따라서 최대한 비슷한 유형끼리 묵어서 분석하여 시간을 절약하고 싶다는 생각을 함.
-> CCF(Graph Control Flow)를 활용하여 유사도 분석
- 대다수 윈도우 악성코드들이 패킹되어 있기 때문에 언팩을 해야 한다. 알려지지 않은 패킹은..?
-> 샌드박스를 사용하여 언팩을 진행하면 알려지지 않은 패킹도 처리할 수 있다. 그러나 샌드박스 우회 악성코드도 있기 때문에 또 연구가 필요하다.

악성코드를 무조건 실행할 수 았는 방법이 없을까??
1) 실행하고자 하는 악성코드가 윈도우, 리눅스인지 상관하지 않고 싶다.
2) 악성코드가 특정 조건레만 동작하는 것도 무시하고 싶다. (1월 1일에 파괴 동작하는 악성코드, 포르튜갈 윈도우에서만 동작하는 악성코드 등)
3) 지금른 동작하지 않는 C&C라도 이 악성코드 분석은 계속되길 원한다.
4) 그냥 다.. 분석하고 싶..다...

차세대 에뮬레이터의 등장
- 기존의 에뮬레이터의 경우 운영체제를 에뮬레이션 할 수 없다. 그러나 WINE은 리눅스에서 윈도우용 프로그램을 에뮬레이션한다. - 즉, 윈도우 API를 적절하게 리눅스 API에 맵핑하면 된다. (실행 파일 로더 + API 를 적절히 맵핑)
-> Qiling : 윈도우 API를 에뮬레이션 하는 프로젝트
-> 그러나 코딩 되지 않은 윈도우 API를 실행하니 못한다. 즉, 악성코드 실행을 위해 직접 필요한 API를 모두 코딩 해야 한다.

차세대 에뮬레이터란?
- Qiling을 통해 다양한 운영체제 환경을 에뮬레이션 가능한지 확인
-> API의 리턴 값은 하드 코딩된 값만을 리턴.. 특정일에 동작하는 악성코드의 경우, 날짜 API를 호출하여 얻은 결과를 통해 악성행위를 할지를 결정하기 때문에 하드 코딩된 API 리턴 값는 의미가 없음.
-> 차세대 에뮬레이터 두두둥장 는 운영체제를 에뮬레이션하고 악성코드가 원하는 API 리턴 값을 전달하며 최소한의 API 코딩으로 악성코드 행위를 추적할 수 있다면 샌드박스로부터 벗어날 수 있다.

1) 운영체제 에뮬레이션

2) 악성코드가 원하는 API 리턴 값을 전달


악성코드마다 기대 값이 다를 수 있다. 따라서 모든 API 기대 값을 데이터베이스화 하여 어떤 상황(state)에서 어떤 값(action)으로 대응하여 코드커버리지(reward)를 크게


3) 악성코드 행위를 추적 : AI 에뮬레이터를 사용해 최소한의 API 코딩으로 악성코드 행위를 추적할 수 있다