작은 메모장
쉘코드 분석 절차 본문
그래서 바인딩이 무엇인가?
일반적인 프로그램이 실행하면 메모리 공간이 부여
이후 로더가 프로그램을 읽고 그에 필요한 라이브러리를 호출하여 메모리에 적재
사용할 함수를 IAT에 등록시켜 프로그램이 사용할 수 있게 함
이 일련의 과정을 바인딩이라 칭함
이게 왜 문제?
바인딩 과정에 사용되는 로더는 LoadLibrary("Dll name"), GetProcAddress(DLL handler, "function name") 두 함수를 사용
쉘코드 또한 자기가 원하는 작업을 하기 위해서 라이브러리의 함수가 필요함
즉, 쉘코드 또한 바인딩 과정을 통해 사용하려는 함수의 주소값을 취득
이 과정에서 쉘코드는 로더로 바인딩을 하지 않고 스스로 바인딩을 함 -> 로더가 사용하는 두 함수를 똑같이 사용
= 분석하는 쪽에서 사용하는 함수 혹은 사용하는 문자열만 파악해도 쉘코드 판단이 용이
이런 치명적인 약점을 가리기 위해, 공격자는 문자열을 그대로 사용하는 것이 아닌,
사용하려는 함수명, DLL 파일 명 등을 Hash화 하여 사용
이를 API Hash라고 칭함
그럼 이걸 어떻게 막음?
분석가는 미리 쉘코드가 자주 사용하는 함수 및 DLL 파일 명을 전부 해시화 함
이를 테이블로 만들어서 이를 쉘코드와 비교
어느정도의 유사도를 가진 해시값이 자주 사용된다면 이를 의심스럽게 판단 가능
'KISA 사이버 보안 훈련 > 스피어피싱 대응 기본' 카테고리의 다른 글
쉘코드 디버깅 분석 실습_API 해시 패턴 매칭 (0) | 2023.05.23 |
---|---|
쉘코드 API 해시 패턴매칭_YARA 룰셋 (0) | 2023.05.22 |
쉘코드 개요 및 구성요소 (0) | 2023.05.22 |
악성 문서 파일의 구성 요소 (0) | 2023.05.21 |
스피어 피싱 이메일 분석 실습 (0) | 2023.05.21 |