반응형 Security/Reversing7 ※디버그레지스터란? ▣Debug Register 하드웨어 breakpoint를 가능하게 하는 레지스터 [그림 : http://hackability.kr/entry/익스플로잇-개발-12-EMET-52] DR0~3 : 하드웨어 브레이크포인터의 주소. 해당주소 접근/쓰기/실행 시 INT1발생 DR6(Debug Status Register) INT1이 발생한 이유를 알려주는 레지스터. 프로세스에 의해 세트되고 사용자가 직접 지워줘야함 - B0~3(Bit0~Bit3) : 어떤 레지스터에 의해 엑세스되어졌는지 나타냄. - BD(Break for Debug register access,Bit13) : DR7의 GD비트에 의해 디버그레지스터가 잠겨있을 때 디버그 레지스터를 엑세스하면 INT1을 1로 세트되어짐 - BS(Break for .. 2018. 3. 7. [Anti-VM] - 어셈블리 STR편 어셈블리 명령어를 이용한 Anti-VM기법에대해 정리하고자 합니다. ※ 어셈블리 STR이란?- 현재 실행중인 TSS세그먼트 셀렉터의 값을 가져온다. ※Anti-VM- 로컬PC에서는 TSS레지스터는 0x40000000값을 가지는 반면 VMware에서는 다른 값을 가집니다. 로컬 호스트 VM-Ware ※Anti-VM코드(참조 : https://www.aldeid.com/wiki/X86-assembly/Instructions/str)위 블로그를 참조했는데 코드가 온전하진않아서 바꿔서 진행했습니다. 이상입니다. 2018. 1. 14. PEB구조체 LDR을 이용한 Kernel32.dll주소 찾기. 실제 악성코드을 분석하며 적용된 방법으로 PEB의 LDR값을 참조하여 Kernel32.dll의 ImageBase를 획득하는 과정을 정리할게요~!! ※LDR이란?- PEB구조체 내부의 구성 변수로 MSDN에서는 다음과 같이 설명합니다.A pointer to a PEB_LDR_DATA structure that contains information about the loaded modules for the process.즉, 프로세스에 로드된 모듈에 대한 정보를 담고있는 구조체(_LDR_TABLE_ENTRY)를 가리키는 포인터이다. ※악성코드에서 Kernel32.dll의 ImageBase를 가져오는 방법.- 다음은 악성코드에서 사용되는 코드입니다. -코드설명 : 라인바이라인으로... ① MOV EAX,DWO.. 2017. 12. 7. Zw API와 Nt API의 차이 Zw와 Nt API차이는 뭘까? 알아보았습니다.두개의 차이점은 유저모드와 커널모드에서 함수의 형태가 다른 것을 볼 수 있었습니다. 실제코드를 확인하기 위해 ZwCreateProcess코드와 NtCreateProcess코드를 확인해보았습니다. 유저모드 호출시!차이를 알아보기 위해 실제 호출되는 함수의 내부를 보았습니다. ZwCreateProcess NtCreateProcess 유저레벨에서 호출시 EAX에 서비스 넘버인 0x4F를 입력하고 DEX에 스택포인터를 저장하여 KiSystemService의 Routine을 타게 됩니다. 자세히보니 호출된 함수의 주소가 같습니다.즉! 유저레벨에서 ZwCreateProcess와 NtCreateProcess 호출시 같은 함수가 호출되는 것을 볼 수 있습니다. 커널모드 호.. 2017. 5. 11. 이전 1 2 다음 반응형