[Reversing] 전역 변수 지역 변수_어셈블리어 전역 변수는 모든 함수가 접근하고 사용할 수 있다.지역 변수는 정의된 함수에서만 접근이 가능하다. 어셈블리어로는 어떻게 다르게 보이는지 확인해 본다.전역 변수는 메모리 주소에 의해 참조되며,지역 변수는 스택 주소에 의해 참조 된다.즉, 전역 변수는 아래와 같으며mov eax, dword_[주소]mov dword_[주소], eaxmov ecx, dword_[주소]push ecxds : [주소] > 전역변수 지역변수는 다음과 같다.([ebp-4]는 지역 변수 int x 가정)mov dword ptr [ebp-4], 0mov eax, [ebp-4]mov [ebp-4], eaxmov ecx, [ebp-4]push ecxss : [주소] > 지역변수
[Reversing] CreateProcessInternalW() Process Hollowing 기법을 이용하는 Lokibot 분석 시 궁금하여 CreateProcessInternalW()에 대해 메모해본다. 아래 표는 CreateProcess()의 내부함수를 나열하였으며, 후킹하거나 행위를 숨기기 위해 내부 함수를 사용하는 경우가 있다. kernel32.CreateProcessW kernel32.CreateProcessInternalW ntdll.ZwCreateUserProcess //프로세스 생성됨(Suspend 상태) ntdll.ZwResumeThread //메인 스레드 Resume(프로세스가 실행) (표 - 1) CreateProcessInternalW()의 내부 함수를 들어가본다.(그림 - 1..
[Reversing] Crypto-Ransomware 랜섬웨어를 통해 감염된 파일은 암호화 할 때 RSA 알고리즘(비대칭키) 대신 AES 알고리즘(대칭키)를 사용하는지에 대해 작성 할 것이다.AES 대칭키 알고리즘을 사용하는 이유는 속도에 있다. 즉, 빠른 암호화가 가능하다.반대로 RSA-1024, RSA-2048와 같은 비대칭키 알고리즘은 시간이 오래 걸리지만, RSA 비대칭키 알고리즘은 안정성이 훨씬 뛰어나기 때문에 파일 암호화에 있어 함께 사용하게 된다. 즉, 랜섬웨어 제작자는 파일을 암호화 할 때 속도가 빠른 AES를 사용하고, RSA는 AES를 암호화 하는데 사용함으로써 속도와 안정성 부분을 챙길 수 있다. 공격자의 RSA 개인키를 알 수 있다면 감염된 파일을 복호화 할 수 있다.
[Reversing] Zw함수의 접두사의 의미 참조> https://docs.microsoft.com/ko-kr/windows-hardware/drivers/kernel/what-does-the-zw-prefix-mean- ex) zwopenprocess, zwopenprocesstoken, zwqueryinformationtoken 함수등 함수명 앞에 접두사 Nt 및 Zw로 시작하는 걸 볼 수 있다.MSDN 검색 결과 Nt의 접두사는 NT의 약자지만, Zw의 접두사는 의미가 없다고 한다. 최근 알게된 사실로는 직접 호출이 불가능하여 간접호출만 되면서 뒤에 접두사가 Nt > Zw 로 바뀌는 것을 알게되었다.그저 다른 API와 이름으로 인한 잠재적인 충돌을 피하기 위해 사용했다고 하며, 자세한 내용은 해당..
[Reversing] RTF, OLE, Open XML RTFRTF 파일은 여러 OLE 객체로 이루어져 있으며, OLE 객체를 태그 별로 구분을 하고 있다. RTF 파일은 서식 있는 텍스트 포맷으로 HxD을 이용하여 rtf라는 문자열을 확인 할 수 있다. 근데 모든 rtf 파일이 저런건 아닌거 같다..그림 1 – RTF HxD OLEMicrosoft Office의 .doc, .xls 파일을 HxD을 이용하여 (그림 2)와 같이 OLE 헤더 시그니처를 확인 할 수 있다. 또한, 해당 “test_doc.doc” 파일은 7-zip을 이용하여 압축 해제하게 되면 각각의 OLE 객체들을 확인 할 수 있다. 그림 2 – OLE HxD Open XMLMicrosoft Office의 .docx, .docm, .xlsx..
# SHGetFolderPath 참조> http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp> https://tarma.com/support/im9/using/symbols/functions/csidls.htm CSIDL_FLAG_CREATE (0x8000) Version 5.0. Combine this CSIDL with any of the following CSIDLs to force the creation of the associated folder. CSIDL_ADMINTOOLS (0x0030) Version 5.0. The file system directory that is used to ..
[Reversing] API 동적 로딩 기법, PEB의 LDR 이용 참조> https://5kyc1ad.tistory.com/328> https://sanseolab.tistory.com/47 TEB0x30 : PEB PEB0x0C : PEB_LDR_DATA PEB_LDR_DATA0x0C : ( InLoadOrderModuleList )0x14 : ( InMemoryOrderModuleList )0x1C : LDR_MODULE ( InInitializationOrderModuleList ) ( InLoadOrderModuleList )( 바이너리 -> ntdll.dll -> kernel32.dll -> kernelbase.dll )0x00 : Next Module0x04 : Previous Module0..
[Reversing] PEB Structure 참고> https://5kyc1ad.tistory.com/328> https://sanseolab.tistory.com/47 kd> dt _PEBnt!_PEB +0x000 InheritedAddressSpace : UChar +0x001 ReadImageFileExecOptions : UChar +0x002 BeingDebugged : UChar +0x003 SpareBool : UChar +0x004 Mutant : Ptr32 Void +0x008 ImageBaseAddress : Ptr32 Void +0x00c Ldr : Ptr32 _PEB_LDR_DATA - 링크 +0x010 ProcessParameters : Ptr32 _RTL_USER_PROCESS..
- Total
- Today