시스템 해킹 18

PAM 알아보기

PAM(Pluggable Authentication Modules)리눅스 시스템에서 사용자의 인증을 담당하는 모듈사용자의 서비스 접근 통합 관리네가지 모듈(auth, account, password, session)로 구성됨각 모듈을 활용해 root 접속 제한, 비밀번호 강도 설정, 비밀번호 만료 일자 등을 설정함 → 사용자 계정 보안 강화모듈 설명authentication비밀번호, 공개키를 이용하여 사용자의 신원을 확인하는 모듈account계정 만료, 시간, 특정 서비스 접근 권한 등 인증 조건을 검사하는 모듈password비밀번호 갱신, 복잡도 등을 설정하는 모듈session사용자 세션의 시작부터 끝까지 가능한 작업을 정의하는 모듈PAM을 통한 접근 제어로그인 시도PAM이 /etc/pam.d 에 있는..

시스템 해킹 2024.10.22

Mac M2 UTM에 Kali Linux 설치하기

시스템 보안 수업 들으면서 학교 데스크탑 쓰기 불편해서 UTM에 칼리를 설치해보기로 했다.https://www.kali.org/docs/virtualization/install-utm-guest-vm/ Kali inside UTM (Guest VM) | Kali Linux DocumentationTo install and set up a UTM VM it is pretty straightforward. We first download UTM and then launch the app. After this we can click create VM and start the short process: We will select Virtualize, as we will be using a Kali Apple M..

시스템 해킹 2024.10.08

SSTF Hacker's Playground

1. BOF101 bof101.c 코드 확인. printflag 함수를 실행시켜야 플래그를 알아낼 수 있다. 이름이 뭐냐고 물어보고 여기에 140바이트만큼의 이름을 입력해야 한다. bof 공격을 이용해서 140바이트보다 큰 값을 주고 check 값을 0xdeadbeef 그대로 유지해줘야 할 것 같다. 0x90(144) 바이트만큼의 공간을 할당해준다. DWORD PTR [rbp-0x4] = 0xdeadbeef 인걸로 보아 전자가 check 변수인 것 같다. 아래에서 check가 0xdeadbeef인지 검사해서 다르면 경고 문구를 출력한다. 2. BOF102

시스템 해킹 2022.08.23

4주차 질문

[pwnable.kr bof] 문제 질문 1. disas 명령어로 main과 func를 디스어셈블했을 때 주소가 0x0000000000001169일 때가 있고, 0x0000555555555169일 때가 있는데, 이렇게 주소가 바뀌는 건 왜 그런건지 궁금합니다. 찾아보다가 알았는데, PIE가 enabled 상태여서 그런건가요? 2. mov DWORD PTR [rbp-0x4], edi 이 부분이 rbp-0x4가 가리키는 주소에 edi를 대입한다는 뜻이 맞나요? 그러면 rbp-0x4는 베이스 포인터에서 0x4만큼 뺐다는 의미가 되는건가요 3. 다른 분들의 write up을 참고하고 어셈블리어 공부를 하면서 분석해봤는데, 다른 write up들은 대부분 esp, ebp 이런 식으로 나오고 저는 rbp, rsp ..

시스템 해킹 2022.08.19

gdb 개념 및 사용법

gdb(GNU Debugger) 다른 프로그램을 수행 중에 그 프로그램 내부에서 무슨 일이 일어나고 있는지 보여주거나 프로그램이 잘못 실행되었을 때 무슨 일이 일어나고 있는지 보여주는 것. C, C++, Modula-2로 짠 프로그램을 디버그 할 수 있다. 코어파일 분석 또는 디버깅에 사용된다. quit으로 종료 명령을 주기 전까지는 터미널로부터 명령 라인을 읽어들인다. 디버깅 방법 '-g' 옵션을 주고 컴파일/링크 gdb 시작하기 gdb - gdb를 실행 후 file이라는 명령으로 program을 부른다. gdb gdb , - 코어 파일을 사용할 때 동시에 인자로 준다. gdb , - 실행 중인 프로세스를 디버그 하려면. gdb -g test.c -o test gdb test 명령어 정리..

시스템 해킹 2022.08.19

basic exploitaion 001 문제 풀이

Stack Canary : 스택 버퍼 오버플로우로부터 반환 주소를 보호한다. 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법. 카나리 값의 변조가 확인되면 프로세스 강제 종료. 스택 버퍼 오버플로우로 반환 주소를 덮으려면 반드시 카나리를 먼저 덮어야 한다. gcc -o no_canary canary.c -fno-stack-protector -fno-stack-protector 옵션을 추가해야 카나리 없이 컴파일 할 수 있다. 근데 이 문제에는 카나리는 없다. 대신 NX가 있다. NX(DEP) NX와 DEP는 같은 개념의 보호기법이다. Non executable, Data Execution Protection의 약자. 'he..

시스템 해킹 2022.08.19

pwnable.kr bof 문제 풀이

버퍼 오버플로우와 관련있는 문제인 것 같다. 코드를 다운받아서 확인해봤다. func 함수에 0xdeadbeef라는 값이 입력된다. 이 입력된 key가 0xcafebabe와 같아야 쉘 코드를 얻을 수 있는 것으로 보인다. overflow me라고 출력하는 걸 봐서는 gets 함수로 overflowme 배열에 입력을 받는 것 같은데 이 배열의 크기 32보다 크게 입력받아 int key의 값을 0xcafebabe로 변조해야 한다. gets 함수를 통해서 입력받을 때 입력 길이에 대한 제한이 없으므로 버퍼 오버플로우 공격이 가능하다. overflowme에서 key까지의 거리를 구하여 gets() 함수로 32바이트 길이를 초과하도록 입력하여 key 값을 덮어쓰는 방법을 생각해본다. 일단 pwndbg를 사용해서 g..

시스템 해킹 2022.08.19

Stack Overflow

함수 호출 규약 함수의 호출 및 반환에 대한 약속. 한 함수에서 다른 함수 호출 시, 프로그램 실행 흐름이 이동한다. 호출한 함수가 반환하면, 다시 원래의 함수로 돌아와서 기존의 실행 흐름을 이어나간다. 함수를 호출할 때는 반환된 이후를 위해 호출자(Caller)의 상태(Stack Frame)및 반환 주소( Return Address)를 저장해야 한다. 호출자는 피호출자(Callee)가 요구하는 인자를 전달해줘야 하며, 피호출자의 실행이 종료될 때는 반환 값을 전달받아야 한다. 함수 호출 규약의 종류 x86(32bit) 아키텍처 = 레지스터의 수가 적음. 스택으로 인자를 전달함. x86-64 아키텍처 = 인자가 적으면 레지스터만, 인자가 너무 많을 때는 스택 사용. CPU의 아키텍처가 같아도 컴파일러가 ..

시스템 해킹 2022.08.18

gdb 분석 실습

※ 스택 프레임(stack frame) 메모리의 스택 영역 = 함수 호출과 관계되는 지역 변수와 매개 변수가 저장되는 영역. 함수의 호출과 함께 스택 영역이 할당되며, 호출 완료 시 소멸함. 함수가 호출되면 스택에는 - 함수의 매개변수 - 호출 끝난 후 돌아갈 리턴주소 값 - 함수에서 선언된 지역 변수 등이 저장된다. 스택 프레임 : 스택 영역에 차례대로 저장되는 함수의 호출 정보 -> 함수의 호출이 모두 끝난 뒤에, 호출되기 이전 상태로 되돌아갈 수 있다. 더이상의 여유 공간이 없을 때 또 다시 스택 프레임을 저장하면 데이터는 스택 영역을 넘어가서 저장되게 된다. -> 프로그램 오동작 / 보안상 취약점 발생 gcc -g test_gdb.c -o test 로 컴파일하고 gdb test 일단 드림핵에서 배..

시스템 해킹 2022.08.18