목록KISA 사이버 보안 훈련/스피어피싱 대응 기본 (14)
작은 메모장
디버깅을 수행하기 위해 32비트 디버거를 실행 일반 프로그램인 메모장을 실행하였음 쉘코드는 일반 프로그램의 메모리 공간안에 메모리 공간을 injection하므로, 이를 그대로 수행 데이터상의 변화는 없지만 메모리 공간이 할당된 상태 여기에 쉘 코드 자체를 주입시킴 성공적으로 주입이 되었음 단, EIP레지스터는 여전히 노트패드 프로그램의 시작점을 가리키고 있음 그러나 쉘코드가 원하는 시작지점은 따로 존재함 때문에 쉘코드가 원하는 시작지점으로 EIP를 설정함
앞서 이 쉘코드는 인터넷 연결을 통해 데이터를 다운로드 후 메모리 공간에 적재하고 Http통신을 통해 C2통신을 함을 알았음 정확히 어떤 도메인을 통해 통신을 하는 것인지 추가적으로 분석 문자열 분석 Hex Editer로 분석하면, /iWWE라는 데이터가 보임 이는 HTTP의 URL패턴 또한, baidu.com이라는 도메인 또한 보임 이곳에서 공격이 이루어짐을 짐작할 수 있음 User-Agent라는 데이터를 추가로 발견 이는 Http 요청 메시지의 헤더값 중 하나 요청 시 브라우저의 버전 및 종류를 나타냄 이를 통해 쉘코드는 HTTP 요청을 사용하고 있음을 예상할 수 있음 직접적인 IP 데이터가 보임 이는 C2 시스템의 아이피일 가능성이 매우 높음 하지만 이는 어디까지나 예상하는 정보로, 정확한 정보는 ..
문제의 쉘코드를 IDA를 통해 분석 어셈블리 코드 형태로 강제 변환한 쉘코드 내부 구조 복호화를 위한 루프또한 보임 이를 통해 이 파일은 쉘코드임을 확신하고 분석 시작 Hax Editer를 사용하여 문제의 값을 찾음 이런식으로 나머지 API또한 찾을 수 있음 쉘코드 행위 분석 VirtualAlloc() 함수는 Heap 메모리를 할당할 때 사용하는 함수 InternetConnectA()함수는 인터넷으로 특정 데이터나 파일을 가져오는 함수 따라서 이 쉘코드는 종합적으로, 정상 실행되는 프로세스를 종료시키고 에러를 발생 시킨 뒤 사용하려는 라이브러리를 로드 후 가상 메모리 생성 이후 Http연결을 통해 인터넷에서 특정 파일을 다운로드 및 실행 하는 과정을 하는 것으로 판단
이 파일들은 전부 쉘코드로 크기가 매우 작음 보통 문자열 탐색을 진행 -> 탐지되지 않는다면 API Hash 탐색을 진행 이 순으로 진행 API Hash 탐색시 사용할 Yara Rule 값 공격자들도 바보가 아니기 때문에, 사용하는 Hash 알고리즘이 전부 다름 가장 많이 사용하는 알고지름은 ror13add로, 상기 4개의 쉘코드 또한 ror13add로 암호화 됨 Yara rule 내부 값 특정 문자로 시작하는 값이 있으면 이를 탐지하는 식으로 구성됨 이를 API 하나하나마자 설정하였음 Yara rule셋을 첫번째 파일에 적용시켜 감지가 되었음 사용한 API가 나왔으니 이를 해석하는 것이 가능 쉘코드 분석 쉘코드와 관련한 주요 API 및 라이브러리 함수는 다음을 따름 기능 주요 API 및 라이브러리 함수..
그래서 바인딩이 무엇인가? 일반적인 프로그램이 실행하면 메모리 공간이 부여 이후 로더가 프로그램을 읽고 그에 필요한 라이브러리를 호출하여 메모리에 적재 사용할 함수를 IAT에 등록시켜 프로그램이 사용할 수 있게 함 이 일련의 과정을 바인딩이라 칭함 이게 왜 문제? 바인딩 과정에 사용되는 로더는 LoadLibrary("Dll name"), GetProcAddress(DLL handler, "function name") 두 함수를 사용 쉘코드 또한 자기가 원하는 작업을 하기 위해서 라이브러리의 함수가 필요함 즉, 쉘코드 또한 바인딩 과정을 통해 사용하려는 함수의 주소값을 취득 이 과정에서 쉘코드는 로더로 바인딩을 하지 않고 스스로 바인딩을 함 -> 로더가 사용하는 두 함수를 똑같이 사용 = 분석하는 쪽에서 ..
쉘 코드의 기본 개념 소프트웨어 취약점을 공격하는 익스플로잇의 페이로드 아주아주 작은 크기의 코드 => 기계어 코드 다양한 방법으로 메모리에 주입 후 실행이 목적 익스플로잇, 문서형 악성코드, 코드 익젝션 기능을 활용하는 악성코드 분석에 필수 대부분 API나 라이브러리 함수를 이용하여 구현 -> 1) 호출하는 라이브러리 함수나 API를 식별 2) 호출한 라이브러리 함수 및 API에 전달하는 파라미터를 확인 쉘 코드의 동작 방식 일반적인 실행파일과 다르게, - 별도의 포맷이 존재하지 않음 - 대부분의 경우 코드 및 데이터로만 구성 - 익스플로잇, 악성코드 등에 의해 메모리에 주입된 후 실행 - 대체로 시스템에 존재할 가능성이 높은 DLL/SO만을 사용 - 쉘코드가 직접 바인딩을 수행(셀프 바인딩) - AP..
스피어피싱 메일 첨부 파일의 일반 유형 MS office 문서 PDF 문서 HWP 문서 RTF 문서 ZIP, jar 등 압축 파일 굉장히 그럴듯 한 메일을 보내 첨부된 파일을 열게 만듬 왜 첨부 파일로 보내는가? 소프트웨어 취약점을 공격해 파일에 내장된 객체(쉘 코드, 스크립트, Exploit, 실행파일 등)를 강제로 실행 악성 문서 파일의 구성요소 - Exploit 문서 파일을 처리하는 소프트웨어(MS office, 한컴 오피스, Adobe PDF 등)의 비정상 동작을 유발, 임의 코드를 강제로 실행하도록 유도하는 문서 내의 데이터 - ShellCode 메모리 상에서 임의로 실행되는 머신 코드 혹은 명령어 공격의 첫 단계로 이 코드를 메모리 상에서 실행시키는 것이 우선적인 목표 - Script / Ma..
기본적인 msg형태의 메일 메일의 이동 경로 및 각종 정보를 담고 있음 바이너리 데이터로 이루어져 있어 이를 eml 형식으로 변환시켜야함 msg2eml을 이용하여 변환 변환은 되었는데 가독성이 매우 떨어짐 때문에 이를 시각화하여 보여줄 수 있는 툴을 사용 SysTools 툴을 사용하여 변환한 메일을 시각화 현재 보여지는 것은 noreply.taxreg 메일 주소에서 derek 메일 주소로 갔음이 표시 됨 이를 자세하게 검사하기 위해서는 Header Form을 검사할 필요가 있음 메일의 Header Form은 가독성이 매우 떨어짐 이를 시각화 하여 보여줄 수 있는 툴을 또 사용 MHA (Mail Header Analyzer) 툴을 사용하여 시각화 실행하면 로컬 서버의 8080번 포트로 서버가 실행됨 이곳에..