전체 글 51

스미싱(국민건강검진센터) 악성코드 분석

어플리케이션 분석을 위한 기본적인 절차대로 APK파일에서 class.dex파일을 추출한 후 dex2jar을 이용해 디컴파일 해줍니다. 이후 jd-gui를 이용해 디컴파일 된 파일을 열어주고 본격적으로 분석을 시작합니다. 쓰기권한, 메세지 읽기, 메세지 받기, 외부저장소 쓰기, 등의 권한을 요구하고 있죠? 자세한 권한은 아래의 링크에서 찾아 보면 됩니다. developer.android.com/reference/android/Manifest.permission Manifest.permission | Android 개발자 | Android Developers developer.android.com 만약 if문에 걸리는 권한들이 없으면 그 [*] 동작에 필요한 권한 확인 및 사용자에게 요청 [참고] 과도한 권..

Malware 2020.12.19

WindowsDriver Develop Basic2 [정리중]

#inlcude // nt legacy style 디바이스 스택을 사용하지 않음 #include // wdm style 디바이스 스택을 사용하는 경우 windbg 명령어 원하는 문맥으로 전환 ( eip컨트롤이라고 생각) 명령 순서 : .process 주소 -> .thread 주소 .process [프로세스 주소] = 전환하려는 프로세스의 주소값을 사용 .thread [쓰레드 주소] = 전환하려는 쓰레드의 주소값 1. 프로세스가 실행될때, 종료될때는 어떻게 알 수 있을까??? 새로운 프로세스가 실행되거나 종료될때마다 운영체제가 커널 드라이버의 루틴을 호출해줍니다. 즉 , PsSetCcreateProcessNotifyRoutine을 호출해준다. 2. 드라이버 또는 동적라이브러리가 메모리에 상주하는 시기를 드..

WindowsDriver 2020.09.23

WindowsDriver Develop Basic [정리중]

기본 개념 - 장치[Device]라고 하면 다른게 아니라 마우스나 키보드, USB와 같은 것들이 장치라고 말할 수 있다. - 운영체제에서는 이러한 장치를 편리하게 사용하기 위해서 PnP[플러그 앤 플레이]라는 기능이있다. (레거시 플러그 앤 플레이 ( PnP ) : 꽂으면 실행된다는 뜻) - PnP라 하면 새로운 장치를 컴퓨터에 집어 넣었을 때, 컴퓨터가 그 장치를 자동으로 인식할 수 있는 능력을 주는 표준 을 말한다. - 각 장치가 연결되면 각 장치마다 위의 구조와 같은 구조의 인스턴스가 생성되는 것이다. - > DriverObject 구조체 - 직관적으로 하나의 USB가 연결되면 해당 USB를 관리할 때 사용 하기 위해서 커널에서 DriverObject 구조체를 가진 객 체를 생성하고 생성된 개체를 ..

WindowsDriver 2020.09.22

FIESTA2020 Stepin-3 (매크로 악성코드)

문제 풀이를하기 보다는 문제를 풀면서 몰랐던 '기술?'이나 '신박하다!'라고 생각했던 부분들을 추려서 정리해보려고 합니다. 바이너리를 받자마자 '매크로 악성코드'라고 생각 했다. (분석경험에서 나온 감 이랄까?) 아무튼 매크로 코드를 추출하려고 구글링 하면서 오만 가지 별짓을 다해보았는데 추출이 안되는 것입니다 ㅡㅡ 결국 동적 분석을 선택했고 문서를 실행시켜보았습니다. 암호를 풀 수 있는 방법을 찾아보니 다음과 같다. ------ [*] Doc Project 암호 제거 ------ [핵심] DPB를 DPX로 바꿔줍니다. 드디어 코드를 볼 수 있었다.!!!!!!!!!!!!!!! 하지만, 여기서 바로 분석을 하는 것이아니라 [중요] '도구>VBAProject 속성의 탭메뉴 보호에서 새 암호를 입력후 프로젝트..

Malware 2020.09.16

신용카드 정보를 훔치는 POS 악성코드(Alina v3.4)

먼저 POS란? "판매시점 정보관리를 담당하는 기기이며 일반적으로 포스기라고 부르는 시스템을 이야기합니다." 라고 나와있네요 ㅎㅎ 사진 부터 보시죠 식당가면 카운터에 있는 기계를 POS라고 하는거 같아요 :) 본론으로 들어갑시다.. [참고] 샘플 : 1efeb85c8ec2c07dc0517ccca7e8d743 ( Alina v3.4 ) [참고] https://blog.alyac.co.kr/3097 언패킹 시도... 분석하기전에 앞서 필요한 상식부터 짚고넘어가 보겠습니다. [참고] 동기화란? - 작업들 사이의 수행 시기를 맞추는 것. - 사건이 동시에 일어나거나, 일정한간격을 두고 일어나도록 시간의 간격을 조정하는 것을 이른다. CriticalSection(임계영역)란? - 이 말을 '치명적 영역'으로 번역..

Malware 2020.08.28

PEB를 이용한 DLL로드

옛날에 PEB를 공부하면서 간과했던 부분이 이제서야 중요하다는 것을 깨닫고 이렇게 정리 해본다. 악성코드를 분석하던 중 위와 같이 Import 되는 라이브러리는 하나밖에 없는데 바이너리를 실행 시켜보면 kernel32.dll등 데 WinAPI를 자유자재로 사용하는 것을 볼 수 있습니다. 어떻게 이것이 가능하냐????? [중요] 바로 PEB를 이용해 현재 로드된 모듈들을 가져와서 사용하는 것입니다. [ 중요 ] 간단하게 설명하자면 PEB구조체의 필드중에 'Ldr'이라는 포인터 변수가 있다. Ldr은 _PEB_LDR_DATA라는 구조체를 가지고, 이는 현재 프로세스에서 로드한 모듈들의 정보를 담고 있다. 즉, Ldr은 현재 프로세스에서 로드된 모듈들의 정보를 가지고 있다. [참고] 32비트는 0xc만큼 떨어..

Malware 2020.08.23

cb-bitcoinstealer.exe (비트코인 주소를 바꾸는 악성코드)

해당 악성코드는 C#으로 컴파일 되어있어서 'dotPeek'이라는 c#디컴파일러로 디컴파일 을 진행하여 정적분석을 진행하였습니다. 결론은 cb-bitcoinstealer.exe는 자기 자신을 다음과 같은 경로에 복사를 하는 것을 확인 할 수있고, 이후 rekeywiz64.exe를 자식프로세스로 생성합니다. rekeywiz64.exe가 실행되면 [중요] FormBackground 객체를 생성합니다. 악성코드의 주요행위는 FormBackground에 있습니다. 이제부터 FormBackground를 분석해 보겠습니다. 이제부터 클립보드의 대한 통제권은 해당 악성코드가 가지게 됩니다. [ 코드 분석1 ] 'm.Msg != 797' --> 797은 클립보드가 변환되면 같는 message입니다. 즉 , 클리보드가 ..

Malware 2020.08.23