IT 110

[Packet Tracer] IP 설정, Routing Protocol 설정, Ping Test, ACL(Access Control List) 설정

Topology 1. 각 라우터(3대)와 PC(4대), 그리고 서버(1대) IP 설정 1) 라우터 IP 설정 각 라우터의 CLI에서, 해당 라우터가 가진 모든 인터페이스에 대해 다음과 같이 입력한다:interface {현재 인터페이스의 종류} {번호}ip address {현재 인터페이스의 IP} {서브넷 마스크}no shutdown 결과 확인을 위해 다음과 같이 입력한다:sh ip interface brief그럼 다음과 같이 결과 확인이 가능하다:* Router0 * Router1 * Router2 2) PC, 서버 IP 설정각 PC/서버의 Desktop > IP Configuration에서 다음과 같이 설정한다:IPv4 address: 해당 PC/서버의 IP 주소Subnet mask: 255.255.2..

IT/프로젝트 2024.05.28

[Memory management] Swapping

💡SwappingOS가 memory의 address space 중 현재 그닥 필요하지 않은 부분 (page)을 hard disk drive에 보관해둠으로써,  memory 공간의 부족을 완화하는 것이다. swap space: main memory에 있던 일정한 크기의 page들이 disk 내로 옮겨지는 공간  - 이 공간은 page 단위로 구획돼있어야 한다.  Present Bit in PTE(Page Table Entry) 👇present bit page fault와 page replacement ▶Page fault: physical memory에 존재하지 않는 page에 접근하려 할 때 발생 ▶Page replacement아래 순서로 일어난다.1.load instruction이 수행됨 2. pr..

[Shellshock attack] environment variable, bash, parse_and_execute()

Shell function을 child process에게 전달하는 방법▶Shell function 예시 ▶방법 1. parent shell에서 "함수" 형태를 가진 환경 변수를 정의한다.(정말 함수로서 정의됐는지 보려고 declare -f로 확인해 보았을때 정상적으로 함수 코드가 보이며, 함수를 실행하면 제대로 작동한다.) 이제 export -f로 함수를 export하고, child shell을 실행하면, child shell은 함수를 잘 전달받았다. (정말 잘 전달받은지 보려고 다시 declare -f로 확인해 보았을 때 정상적으로 함수 코드가 보이며,함수를 실행하면 제대로 작동함) ▶방법 2.parent에서 (이 방법에서는 parent가 꼭 shell이 아니어도 된다.) 단순히 "string" 형태의..

IT/시스템 보안 2024.05.19

[System Hacking] fho ㅡ Hook overwrite

Hook Overwrite란 malloc, free, realloc 함수는 각각 훅 변수가 존재하며,이 함수들은 시작할 때 해당 훅 변수가 존재하는지 검사하고, 존재하면 이를 호출한다.이때, 이 변수들은 libc의 bss 섹션에 위치하여 쓰기 가능하므로, 실행 중에 덮어쓰는 것이 가능하며,이에 성공하면, malloc/free/realloc 함수를 호출할 때 조작되어버린 훅을 호출하여, 조작된 주소로 jump하게 되므로, 실행 흐름이 조작되는 것이다.게다가, 훅을 실행할 때는 기존 malloc/free/realloc 함수에 전달한 인자를 같이 전달해 주기 때문에,   예를 들어 __malloc_hook를 system 함수의 주소로 덮고, malloc(“/bin/sh”) 을 호출하면,"/bin/sh"이 sy..

IT/Wargame 2024.05.17

[RELRO] RELRO의 개념, RELRO의 우회

RELRO란ELF는 data segment에 있는 GOT를 활용하여 반복되는 라이브러리 함수의 호출 비용을 줄이며,이 GOT에 값을 채우는 방식 중 Lazy Binding은   함수가 처음 호출될 때 함수의 주소를 구하고, 이를 GOT에 적는 방식이다.그런데 이 방식의 바이너리는 실행 중에 GOT 테이블을 업데이트할 수 있어야 하기에, GOT에 쓰기 권한이 부여가 되므로 취약하다.한편, ELF의 data segment에는 프로세스의 초기화 및 종료에 실행할 함수들의 주소가 저장된 .init_array, .fini_array가 있는데,여기가 조작이 가능하다면 이또한 취약하다.이러한 문제들을 해결하고자,데이터 세그먼트 중, 쓰기 권한이 불필요한 영역의 쓰기 권한을 제거함으로써, 해당 영역을 보호하는 RELR..

IT/시스템 보안 2024.05.15

[PIE] PIC와 PIE의 개념, 상대 참조, PIE의 우회

PIC와 PIE의 개념 PIC(Position-Independent Code): 재배치(Relocation)가 가능하여, 메모리의 어느 주소에 적재(매핑)되어도 코드의 의미가 훼손되지 않고 제대로 실행될 수 있는 코드  - rip를 기준으로 데이터를 상대 참조(Relative Addressing)하기 때문  PIE(Position-Independent Executable): 메모리의 어느 주소에 적재(매핑)되어도 실행 가능한 실행 파일   - PIE의 모든 코드는 PIC이다.- ASLR이 적용되면, 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 뿐만 아니라 코드 영역까지도 무작위 주소에 적재됨 (↔ PIE가 아니면, 코드 영역은 랜덤이 아님)- 다만 ASLR이 안 적용되면, 무작위 주소에 적재되지..

IT/시스템 보안 2024.05.15

[DirtyCOW] memory mapping, mmap(), Copy on Write

memory mapping memory mapping이 뭔가요? 일반적으로 file에 access(open, read, write, ...)하는 방식은 두 가지가 있다. 1) by I/O Operation파일에 접근할 때마다 매번 system call을 통해 kernel을 깨워야 함-> overhead가 발생해버린다. 2) by memory mapping처음에 파일의 내용을 프로세스의 메모리에 한번 mapping해 두면,이후에 파일 내용에 접근할 때는, system call이 아니라, 메모리 주소를 통해 직접 접근  -> overhead 최소화! memory mapping by mmap() system callvoid *mmap(void addr[.length],  시작 주소: 어디에다가부터 mappin..

IT/시스템 보안 2024.05.14

[Memory management] Paging

이전 글 2024.05.01 - [IT/컴퓨터구조, 운영체제] - [Memory management] Memory virtualization, Dynamic relocation, Segmentation [Memory management] Memory virtualization, Dynamic relocation, Segmentation💡Memory virtualization & Address Space - for Abstraction OS는 physical memory를 virtualize하여,각 프로세스가 전체 메모리를 전부 사용하는 것처럼 보이게 한다. Virtual address를 Physical address로 translate하는 것은 OSintoky.tistory.com 💡3. Paging..