Windows 보호기법의 우회 MS 는 SetProcessValidCallTargets 라는 API를 process 에 있는 arbitrary address 를 화이트리스팅하기 위해서 사용한다. SetProcessValidCallTargets 는 내부적으로 ntdll!NtSetInformationVirtualMemory 를 VmInformationClass=VmCfgCallTargetInformation 으로 실행한다. 1 2 3 4 5 6 7 //Whitelisting an arbitrary address HANDLE p = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION, FLASE, process_id) MEMORY_BASIC_INFORM..
Process Injection 는 악성코드에 의해서 사용되며 용도는 다음과 같다. 1. malware 가 더 강력한 은폐 능력을 얻기 위해서 2. AV 같은 보안 제품을 우회하기 위해(예를 들어 네트워크 접속에 대한 권한이 허용된 프로세스에 Injection을 한다면 우회가능) 이 문서의 타겟은 'Windows 10 x64 1803+ 64bit processes' / medium integrity process (즉 권한 상승이필요한 경우는 제외함) CFG 그리고 CIG 를 적용한 상태 그리고 적용하지 않은 상태에서 테크닉을 사용해보았음 Injection 기술의 분류 1. Process spawning 이 방식은 정상적인 실행 파일의 프로세스를 생성한 후 이 프로세스를 시작(running)하기 전에 변..
RSA == 공개키 암호화 방식 은 PUBLIC, PRIVTAE 이 두 개의 키를 이용해서 암호화/복호화를 진행합니다. 그렇다면 먼저 봐야할 것은 이러한 두 키가 어떻게 만들어지는가 입니다. 1. p, q 구하기 2. N 구하기 2. 그리고 p, q 를 서로 곱해서 N을 만듭니다. N = p * q 앞에서 1과 3을 입력했으므로 N은 3이 됩니다. - RSA KEY 연산을 하는 프로그램에서도 실제로 p * q 연산을 하는 것을 확인할 수 있습니다. 3. e와 d구하기 그리고 이 N 이 각각 3. 공개키 (e, N) 개인키 d, N) 으로 들어갑니다. 그렇다면 다음은 e와 d도 구해줘야합니다. φ(N) = (p-1)(q-1) e : φ(N) 와 서로소이면서 φ(N) 보다 작은 수 d : (d * e) % ..
Format String Bug (32bit)format string bug는 printf(string); 형식으로 사용했을 때 일어나는 버그이다. 이 취약점을 이용하면 memory write read 가 가능해진다. 읽기 %x 를 사용하면 메모리를 읽을 수가 있다. 현재 입력 값으로 printf("%4x %4x %4x") 를 주었다. 위는 printf 를 호출하기 전의 스택이다. 출력 값은 다음과 같다. 즉 간단히 $esp + 4 부터 차례대로 4바이트 씩 출력된다고 보면된다. %p 를 사용하면 더 깔끔하게 출력 가능하다. 특정 위치에 있는 것을 출력하기 위해서는 %숫자$p 를 사용한다. 숫자 부분에 들어가는 숫자만큼 4*숫자 만큼 뒤의 메모리를 얻을 수 있다. 예를 들어 %2$p 를 사용한다면 8바이..
알고있던 내용들이 정의로 깔끔하게 정리되어있어 문서를 좀 번역해보았습니다. 취약점을 익스플로잇 하고 코드 인젝션을 하기 위해서 다음 것들을 해야합니다. 1. 익스플로잇에 필요한 메모리를 해커가 덮어쓸 수 있어야합니다. 2. 익스플로잇에 필요한 메모리 주소를 찾습니다. 3. 코드를 프로그램의 메모리에 카피 시킬 수 있습니다. 4. 인젝션한 코드를 실행하기 위해서 취약점을 사용합니다. 관심있는 메모리 코드가 저장된 주소 : 만약 이 부분을 수정할 수 있다면 프로그램이 실행될 때 원하는 코드를 실행하게 할 수 있습니다. 종류 - 리턴 주소 : 대표적인 코드가 들어있는 주소입니다.- GOT : 리눅스에서 동적으로 로딩되는 함수의 코드가 들어있는 주소입니다. - Virtual function table : 실행할..
시간을 거치며서 퍼징 도구는 더 이상 랜덤 데이터 생성에만 의지하지 않습니다. 퍼징 도구는 각각 장단점이 있으며 댜양한 퍼징 도구와 파라미터로 시험하는 것이 좋습니다. 변형 퍼징 도구(Mutation Fuzzer) 가장 간단한 종류이며 입력 값을 랜덤하게 설정한다는 점에서 기본적인 퍼징 개념과 가깝습니다. 램덤으로 데이터를 변형하기 때문에 붙여진 이름입니다. 그리고 변형된 데이터는 소프트웨어와의 충돌을 위해서 사용됩니다. 변형 퍼징 도구에는 일반적으로 설정 가능한 두 가지 파라미터가 있습니다. 1. 변형 세그먼트(Mutation Segment) 변형 데이터 부분에 해당합니다. 전체 데이터를 변경하는 것일 수도 있습니다. 모든 데이터가 중요한 것은 아니기 때문에 파일의 특정 부분은 건너뛰는 것이 좋을 것입..
- Total
- Today
- Yesterday
- Intel
- 리눅스 모듈
- gdb 명령어
- GDB
- 변환
- breakpoint
- vmware 오류
- PNP 드라이버
- gdb명령어
- 루트킷
- gdb intel
- 모듈
- LKM
- IRP
- 백도어
- DriverEntry
- vmware cannot connect to the virtual machine
- 디바이스
- gdb intel 변환
- 드라이버
- rootkit
- VMware
- backdoor
- BP
- 레거시 드라이버
- module
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |