1. code Injection(코드 삽입)
- 공격자는 악성 인수를 생성한다
- 공격자가 제공한 악성 코드에 대한 포인터가 포함된 특수하게 조작된 문자열
- 함수가 반환되면 제어권이 악성 코드로 이전된다
- 삽입된 코드는 함수가 반환될 때 취약한 프로그램의 권한으로 실행된다
- 루트 또는 기타 상승된 권한으로 실행되는 프로그램은 일반적으로 공격 대상이 된다
2. Malicious Argument(악성 인수)
- MA의 특징
- 취약한 프로그램에서 합법적인 입력으로 받아들여야 한다
- 인수는 다른 제어 가능한 입력과 함께 취약한 코드 경로를 실행해야 한다
- 인수는 제어권이 악성 코드로 전달되기 전에 프로그램을 비정상적으로 죵료시켜서는 안된다
3. ./vulprog < exploit.bin
< 기호는 I/O 관련으로, 뒤의 내용을 앞의 프로그램에 입력으로 넣는 것이다
우리가 작성했던 비밀번호 가져오기 프로그램은 다음 이진 데이터 파일을 입력으로 제공하여 임의의 코드를 실행하는데 악용 될 수 있다.
첫번째 16바이트의 바이너리 데이터는 비밀번호에 할당된 저장 공간을 채운다.
다음의 12바이트 바이너리 데이터는 컴파일러가 할당한 저장소를 채워 16 바이트 경계에 스택을 정렬한다.
나머지 4바이트 공간은 스택의 반환 주소를 덮어 쓰고 삽입된 코드를 참고한다.
세부적인 내용은 다음과 같다.
4. Malicious Code(악성 코드)
악의적인 인수의 목적은 악성 코드에 제어권을 넘기는 것이다.
- 악성 인수에 포함될 수 있다.
- 유효한 입력 작업 중 다른 곳에 삽입될 수 있다
- 프로그래밍 가능한 모든 기능을 수행할 수 있지만 종종 손상된 시슽메에서 원격 셀을 열기만한다
이러한 이유로 이렇게 삽입된 악성 코드를 쉘코드라 한다.
'시큐어코딩' 카테고리의 다른 글
시큐어코딩 (11) - CH 02-7 (0) | 2025.04.14 |
---|---|
시큐어코딩 (10) - CH 02-6 Arc injection(return-into-libc) (0) | 2025.04.13 |
시큐어코딩 (8) - CH 02-4 버퍼 오버플로우란 무엇일까? (0) | 2025.04.13 |
시큐어코딩 (7) - CH 02-3 프로그램은 메모리에 어떻게 저장되는가 (0) | 2025.04.13 |
시큐어코딩 (6) - CH 02-2 일반적인 오류 코드로 살펴보기 (0) | 2025.04.13 |