IT/시스템 보안 27

[Security란] Security vs Protection, Authentication vs Authorization

✅Security: keeping unauthorized entities from doing things you don’t want them to do: protecting systems from deliberate attacks - Confidentiality, Integrity, Availability  OS의 역할privileged mode, memory protection, file access permissions, ... ✅Protection: protecting files and other resources from accidental misuse ✅Authentication: proving that someone is who they say they are ✅Authorization: Ve..

IT/시스템 보안 2024.04.21

[Heap overflow] Heap overflow의 과정, Exploit, Countermeasures

💡Heap overflow의 과정 ✅예시 프로그램 코드   ✅after strcpy(c, ...)   ✅after free(b)chunk B에 fd, bk 포인터가 생기며,이것이 bin_forward, bin_back과 연결됨으로써, free된 chunk B는 bin에 들어간다.  ✅after strcpy(a, ...) chunk A에, 이것의 크기에 비해 과분한 양의 string이 들어간다.🚩따라서 string은 chunk A의 data 공간을 다 채우고 나서 higher address 방향으로 흘러넘쳐 chunk B를 corrupt시킨다.  ✅after free(a) chunk A도 free되어 fd, bk 포인터가 생겼고,이 포인터들이 기존의 bin (free chunk list)과 연결됨으로써..

IT/시스템 보안 2024.04.21

[Format String Bug] with Variable length arguments

💡Format String Bug (FSB)란?위와 같이,format functions에서,format string 내의 format specifier의 개수 != format string을 제외한 argument의 개수인 경우,짝이 없는 format specifier는 메모리 내의 임의의 데이터를 출력해낸다.즉 memory disclosure 취약점이 발생하는 것이다.   ※ format function의 종류 ※ format specifier란? ※ format string란?format specifier가 포함된 string  💡배경 지식: Variable length arguments를 이용하는 함수는 어떻게 구현돼있을까? ✅Variable length arguments를 이용하는 함수의 아주..

IT/시스템 보안 2024.04.15

[SetUID] 임시적 권한 상승과 이로 인한 취약점

Mode 먼저 파일이나 디렉토리에 대한 권한을 이해해보자. User: 파일의 소유자 Group: 한 Group에 속한 다수의 User는 동일한 permission을 가질 수 있다. 특정 파일에 대한 동일한 접근 권한을 여러 User에게 줘야 하는 경우 Group을 활용하면 효율적이다. Other: User나 Group에 속하지 않는 모든 User SetUID의 개념 필요성 예를 들어 /usr/bin/passwd (계정의 비밀번호를 변경하는 명령어 실행파일)의 경우, /etc/shadow 파일에 접근하여 비밀번호를 변경한다. 이 passwd 실행파일을 소유자인 root 이외의 사용자가 실행할 경우, 이 사용자는 /etc/shadow(root만 접근 가능함)에 대한 접근 권한이 없기 때문에 오류가 발생하여,..

IT/시스템 보안 2024.03.27

[Return Oriented Programming]

사용 배경과 목적 system 함수를 활용해 셸을 획득하고자 system 함수의 주소를 알고싶은데,프로그램에서 이 함수가 활용되지 않고, 심지어 ASLR 기법이 적용돼 있는 바람에 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등의 주소가 바뀐다면,우리는 좀더 먼길을 돌아 주소를 얻어야 한다.: 프로세스에서 libc가 매핑된 주소를 찾은 뒤,이 주소로부터 system 함수까지의 offset을 구해서,최종적으로 system 함수의 주소를 얻기 libc.so.6 라이브러리에는 system 함수 뿐 아니라 이 바이너리가 호출하는 read, puts, printf도 정의되어 있는데,라이브러리 파일은 메모리에 매핑될 때 전체가 매핑되므로, read, puts, printf 뿐만 아니라 system 함수도 ..

IT/시스템 보안 2024.03.15

[Return to Library]

이론  사용 배경과 목적  NX를 우회하여 실행 흐름을 조작하는 것이 RTL의 목적입니다.   NX가 적용되지 않은 경우:어떤 메모리 영역 (eg. 스택 영역)에 쓰기 권한과 실행 권한이 함께 있음 -> 셸코드 주입하여 Return address를 덮어 실행 흐름 조작 가능NX가 적용된 경우:실행될 때 각 메모리 영역에 필요한 권한만을 부여받음-> 일반적으로 셸코드가 주입되었던 위치인 스택 영역이 이젠 실행 권한이 없으므로, 위 방법이 불가해짐따라서, 우리가 직접 주입한 셸코드나, 바이너리에 존재하는 함수는 이젠 활용할 수 없게 됐으니 다른 방식을 찾아봐야 합니다.   원리  리턴 가젯을 활용하여 공유 라이브러리에 있는 함수를 호출하면 NX를 우회할 수 있습니다!  예를 들어, 우리가 현재의 실행 흐름을..

IT/시스템 보안 2024.03.12