일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TSet
- RBAC
- Frequency Response
- AINCAA
- Rr
- Unity #Indie Game
- pdlc
- 언리얼엔진
- DP
- frequency-domain spectrum analysis
- DSP
- MLFQ
- linear difference equation
- 메카님
- 유스케이스
- Race condition
- ret2libc
- MAC
- sampling theory
- 유니티
- 운영체제
- 배경 그림
- dirty cow
- 게임개발
- stride
- dtft
- Security
- Double free
- 게임 개발
- STCF
- Today
- Total
목록운영체제보안 (32)
다양한 기록
버퍼 오버플로우의 대응책 개발자 관점- 안전한 함수 사용 (strncpy(), strncat())- 안전한 라이브러리 사용 (libsafe, libmib) OS 관점- ASLR (Address Space Layout Randomization) 컴파일러 관점- 스택 가드 (스택 카나리) 하드웨어 관점- Non-Executable Stack : NX bit (= DEP, Data Execution Prevention)* 코드 인젝션은 막는데 리유즈는 못막음ASLR : 실행할 때마다 주소를 다르게 할당..현재 스택 프레임의 베이스 포인터 위치(ebp)를 파악하지 못하게 하는 등의 방법악의적인 코드의 위치 또한 모르게 함 ASLR 레벨0 -> 안바뀜1 -> 힙 주소는 그대로고 스택은 바뀜2 -> 대부분의 영역이..
*** 교육 목적으로 작성된 게시글입니다. 정상적으로 보안 기법을 적용한 시스템엔 사용 불가능합니다. *** #include void main(){ char *name[2]; name[0] = "/bin/sh"; name[1] = NULL; execve(name[0], name, NULL);}쉘을 탈취하기 위해 사용하는 코드 시스템 콜 사용 시 인자 전달 법eax: 시스템 콜 번호 (0x0000000b .. 11)ebx: 첫번째 인자 ("bin/sh")ecx: 두번째 인자 (인자 배열의 주소 .. name)edx .. (환경 변수 없음 .. 0)이후 int 0x80 해서 시스템 콜 요청* x86-32 registersEAXEBXECXEDX AX BX CX DX AH | AL BH |..
High addressStack|HeapBSS SegmentData SegmentText(Code) SementLow address* 스택이랑 힙 사이 어딘가에 Shared Library 존재 (printf ..) Text(Code) Segment: 명령어, 상수, 문자열 리터럴Data Segment: 전역 변수BSS Segment: 초기화되지 않은 전역 변수 + 정적 변수Heap: 동적 할당한 변수Stack: 인자, 리턴어드레스, Saved ebp, 지역변수 void func(int a, int b){ int x, y; x = a + b; y = a - b;}movl 12(%ebp), %ebx ; b is stored in %ebp + 12movl 8(%ebp), %edx ; a..
Password Dilemma/etc/shadow ... => -rw-r----- root shadow루트 권한이 있어야만 쓰기가 가능하지만 일반 유저도 비밀번호를 바꾸고 싶을 수 있음 Two-Tier Approach운영체제에서 파인-그레인드 액세스 컨트롤 구현 시 과도하게 복잡해짐OS는 세분화된 접근 제어를 위해 확장에 의존권한이 있는 프로그램이 그러한 확장: set-uid 프로그램, 데몬 타입- Deamon in Linux (Services in MS Windows)- Set-ProgramsSet-UID Concept- 유저가 프로그램을 오너 권한으로 실행하도록 허가 RUID (Real) : 프로세스의 실제 오너 아이디EUID (Effective) : 권한을 나타내는 아이디 RUID는..
운영체제하드웨어 자원을 관리하고 프로그램에게 서비스를 제공하는 시스템 소프트웨어프로세스 관리, 인터럽트, 메모리 관리, 파일 시스템, 디바이스 드라이버, 네트워킹, 보안, I/O ------유저------표준 유틸리티 프로그램------(쉘, 에디터, 컴파일러 등)------표준 라이브러리-------(open, close, read, write, fork 등)--------리눅스 OS------(프로세스 관리, 메모리 관리, 파일 시스템, I/O 등)-------하드웨어----------------(CPU, 메모리, 디스크, 터미널 등) ---------------- UtilitiesShell: 커맨드 인터프리터커맨드, 툴 ..cat, chmod, cp, cut, grep, head, ls, make,..
매뉴얼 관련 키워드 1장 - 명령어passwd, ls -l, ps, ipcs, mknod, fdisk, sh, bash, strings, size, file, gdb, chmod, chown, find, ln, suldd: 실행 파일이나 공유 오브젝트의 디펜던시 보기tee: 표준 입력으로부터 받은 데이터를 화면에 출력하는 동시에 파일에도 저장할 수 있도록 함readelf: 실행 파일 읽겠다는 거objdump: 오브젝트 파일로부터 정보 보기nm: 오브젝트 파일의 정보 보기** 오브젝트 파일 - 컴파일되긴 했는데 링킹 안됨 2장 - 시스템 콜execve(), fork(), read(), write(), ioctl() 3장 - 라이브러리 함수system(), gets(), fread(), printf(), s..
전형적인 인증 도구- user knows - 패스워드- user has - ID card, 여권, 주민등록증- user is or does - 지문, 손바닥 멀티 팩터 인증- 공항에서 여권 확인하고 손바닥 확인하고.. user knows- 일반적이고 예측되기 쉬움- 옛날엔 평문으로 저장되었는데 이제 해싱되어서 저장됨관련 파일.. /etc/passwd, /etc/shadow, /etc/group #/etc/passwdUsername:x:uid:gid:Description:HomeDirectory:/bin/bashx 는 /etc/shadow에 해싱된 비밀번호가 있다는 의미 # /etc/shadowuser:$idofAlgorithm$salt$해싱된패스워드:18556:0:99999:7:::id1 - MD52a ..
권한이 정상적으로 상승하는 경우1. set-uid program2. sudo3. POSIX capabilities *(Portable Operating System InterFace for Unix)* POSIX capabilities루트한테 권한이 너무 많으니 권한을 캐이퍼빌리티로 쪼갬getcap / setcapSetUID / SetGID퍼미션에서 실제로 사용되는 비트는 12개s 두개랑 스티키 비트 passwd 명령-rwsr-xr-x 1 root root ..누구나 명령 실행이 가능하지만 setuid 비트가 켜져 있어서 실행 중에는 권한이 오너의 것으로 상승됨passwd의 오너는 루트이니 루트의 권한으로 실행됨그 잠깐의 실행 중에는 일반 사용자의 uid가 0으로 바뀜* 정확히는 euid가 바뀜 -rws..