Notice
Recent Posts
Recent Comments
Link
«   2026/09   »
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
Archives
Today
Total
관리 메뉴

study

시스템보안과 운영실습 본문

개발/보안

시스템보안과 운영실습

유이슬 2024. 10. 22. 01:14

Kali linux

- Oracle virtualbox를 통해 가상시스템으로 설치됨

- 파일&디렉토리 시스템

  * 많은 수의 디렉토리들이 트리구조로 구성됨

  * 각각의 디렉토리 안에 파일들이 위치함

  * / 디렉토리 : 최상위 디렉토리

계정

 - 일반 사용자

 - root 사용자(관리자 계정

Home 디렉토리

 - 일반 사용자가 작업할 수 있는 공간

 - 일반 사용자 guest의 홈 디렉토리 : /home/guest

 

터미널(Terminal)

 - 리눅스 시스템에서 사용자로부터 명령어를 입력 받는 도구

 - Applications -> System Tools -> Terminal

 

쉘(shell)

 - 터미널상에서 사용자가 입력한 명령어를 인식하는 사용자 인터페이스

 - 쉘 프롬프티 : [root@localhost Desktop]$

 - 종류 : Bash, C, Korn, Bourn

 

리눅스 명령어

 - 리눅스에서는 다양한 종류의 명령어가 존재함

 - man 명령어를 통해서 특정 명령어의 사용법을 알 수 있음

 - ls 명령어의 사용법을 알고자 할 때 : 쉘 프롬프트 상에서 man ls 명령어를 실행함

 

pwd : 현재 작업하고 있는 디렉토리의 완전한 경로명(full path) 

cd : 현재 작업하고 있는 디렉토리를 변경함

mkdir : 디렉토리를 나타냄

. : 현재 디렉토리를 나타냄

.. : 부모 디렉토리를 나타냄

ls : 디렉토리 내용을 출력합니다

rm : 파일, 디렉토리를 삭제함

mv : 파일, 디렉토리의 이름 또는 위치를 변경함

more : 페이지 단위로 화면에 내용물 출력 - $ls | more

find : 파일을 탐색함

grep : 파일에서 특정 패턴을 탐색함

diff : 두 파일의 차이를 출력함

date : 현재 시간을 출력함

cal : 달력을 출력함

ps : 현재 수행중인 프로세스(프로그램) 관련 정보를 출력함

kill : 수행중인 프로세스를 종료시킴

df : 디스크, 파일 사용상태를 출력함

who : 현재 시스템을 사용하고 있는 사용자 계정을 출력함

chmod : 파일의 접근 모드를 변경함

chown : 파일의 소유자를 변경함

chgrp : 파일의 그룹을 변경함

tar : 파일들을 tar 포맷으로 압축하거나, tar 파일에 대한 압축 해제시에 사용됨

gzip : 파일을 gz 포맷으로 압축하거나, gz 파일에 대한 압축 해제시에 사용됨

gcc : c 프로그램 컴파일러

 

vi 에디터

기본 명령어

i : 텍스트 입력 모드로 들어감

ESC x : 한 문자 삭제

ESC dd : 한 라인 삭제

ESC h : 커서를 왼쪽으로 이동시킴

ESC l : 커서를 오른쪽으로 이동시킴

ESC j : 커서를 아래쪽으로 이동시킴

ESC k : 커서를 위쪽으로 이동시킴

ESC Shiftkey j : 다음 라인을 현재 라인에 연결시킴

ESC Shiftkey ; $ : 파일의 마지막 라인에 커서를 위치시킴

ESC Shiftkey ; q! : 에디터 종료

ESC Shiftkey ; w! : 파일 저장

ESC Shiftkey  ; wq! : 파일 저장 후 에디터 종료

 

심볼릭 링크 (Symbolic link)

사용법: ln -s 원본 파일 심볼릭 링크

심볼릭 링크 후에, 단지 한 개의 파일만 존재함 (원본 파일)

심볼릭 링크는 단지 원본 파일에 대한 링크만을 포함

 

레이스 컨디션 공격 (Race Condition Attacks)

동작중인 프로그램을 대상으로 공격을 수행함

성공적인 공격을 위해서, 공격 대상 (target) 프로그램은 임시파일을 사용해야 하며, 공격자는 임시파일을 이름을 알고 있어야 함

lsof 명령어: 하나의 프로세스에 의해 사용되는 파일 리스트를 출력

 

 

 

ALU : 산술 논리 장치

산술 논리 연산. 내부 장치와 레지스터들로 구성됨

구성 요소 기능
내부 장치 가산기(Adder) 덧셈 연산
보수기(Complementer) 뺄셈 연산
이동기(Shifter) 비트들을 왼쪽 또는 오른쪽으로 이동시키는 연산 (나눗셈, 곱셈 연산)
레지스터 누산기(Accumulator) 연산의 결과 저장
데이터 레지스터 (Data Register) 연산을 위해 사용된 데이터 저장
상태 레지스터 (Status Register) 연산의 상태 저장

 

 

제어 장치

입력, 출력, ALU, 메모리 장치들을 제어함. 내부 장치와 레지스터들로 구성됨

구성 요소 기능
내부 장치 명령어 디코더 (Instruction Decoder) 명령어 레지스터에 있는 명령어를 해석하고, 해석한 명령어를 디코더에 보냄
디코더 (Decoder) 해석된 명령어를 각각의 장치에 보냄
레지스터 프로그램 카운터 (Program Counter) 다음에 수행될 명령어의 주소 저장
명령어 레지스터 (Instruction Register) 현재 수행되는 명령어 저장
메모리 주소 레지스터 (Memory Address Register) 메모리 주소 저장
메모리 버퍼 레지스터 (Memory Buffer Register) 메모리 주소 레지스터에 있는 주소에 대응되는 실제 내용물 저장

 

 

레지스터

임시적으로 데이터나 연산결과를 저장하는 메모리 장치(CPU 내에 위치함)

  레지스터 이름 비트수
일반 레지스터 EAX 누산기 (Accumulator) 32
EBX 베이스 (Base) 레지스터 32
ECX 카운트 (Count) 레지스터 32
EDX 데이터 (Data) 레지스터 32
종류 레지스터 이름 비트수
세그먼트 (Segment) 레지스터 CS 코드 세그먼트 (Code Segment) 레지스터 16
DS 데이터 세그먼트 (Data Segment) 레지스터 16
SS 스택 세그먼트 (Stack Segment) 레지스터 16
포인트 (Point)
레지스터
EBP Base Pointer 32
ESP Stack Pointer 32
EIP Instruction Pointer 32
인덱스 (Index)
레지스터
EDI Destination Index 32
ESI Source Index 32
플래그 (Flag)
레지스터
EFLAGS Flag Register 32

 

세그먼트(Segment) 레지스터

메모리 세그먼트들 (e.g. 코드 세그먼트, 데이터 세그먼트, 스택 세그먼트)을 처리함

 

종류

- CS (Code Segment) 레지스터

  코드 세그먼트: 기계어를 저장함

  코드 세그먼트의 시작주소를 가리킴

- DS (Data Segment) 레지스터

  데이터 세그먼트: 데이터, 상수, 프로세스 영역들을 저장함

  데이터 세그먼트의 시작주소를 가리킴

- SS (Stack Segment) 레지스터

  스택 세그먼트: 임시적으로 데이터나 연산 결과를 저장함  

  스택 세그먼트의 시작주소를 가리킴

 

포인트(Point) 레지스터

메모리 번지를 가리키는 32 비트 주소를 저장함

 

종류

- ESP (Extended Stack Pointer) 레지스터

  스택의 top 주소를 저장함

 

- EBP (Extended Base Pointer) 레지스터

  함수의 지역변수의 주소를 저장함

 

- EIP (Extended Instruction Pointer) 레지스터

  CPU가 다음에 수행할 명령어의 주소를 저장함

 

인덱스(Index) 레지스터

  데이터가 읽고 쓰여질 때 사용되는, sourcedestination을 가리킴

  ESI (Extended Source Index), EDI (Extended Destination Index) 레지스터

 

플래그(Flag) 레지스터

  비교와 메모리 세그먼트화를 위해 사용되는 비트 플래그들로 구성함

  EFLAGS (Extended FLAGS) 레지스터

 

레지스터 매핑

구성 요소 연관된 레지스터
ALU 레지스터 누산기 (Accumulator) EAX
데이터 레지스터 EDX
상태 레지스터 EFLAGS
제어장치 레지스터 프로그램 카운터 EIP
메모리 주소 레지스터 EBX, EBP, ESP, EDI, ESI

 

- 텍스트 세그먼트

  코드 세그먼트로도 불림

  프로그램의 어셈블(assembled)된 기계어 명령어를 포함

  크기가 고정됨

 

- 데이터 세그먼트

  초기화된 글로벌(global), 정적(static) 변수들을 포함

  크기가 고정됨

 

- Bss 세그먼트

  초기화되지 않은 글로벌(global), 정적(static) 변수들을 포함

  크기가 고정됨

 

- 힙(Heap) 세그먼트

  프로그래머에 의해 직접적으로 제어됨

  프로그래머의 필요에 의해 메모리 블록들을 할당함

  C 언어에서, malloc(), calloc() 함수들은 힙 세그먼트에서 메모리 할당을 위해 사용됨

  크기가 변동됨

 

- 스택(Stack) 세그먼트

  함수 호출 동안에 지역 함수 변수와 관련 컨텍스(context)들을 저장함

  FILO (First-In, Last-Out)

  Push 연산 : 아이템을 스택에 삽입함

  Pop 연산 : 아이템을 스택에서 제거함

  크기가 변동됨

 

- 함수 호출 관련 명령어 (x86 프로세서)

 

(1) push <source> :

스택에 source 오퍼랜드를 push.

(2) pop <destination> :

스택에 있는 값을 pop해서 destination 오퍼랜드에 저장함.

(3) call <location> :

함수를 호출함, 프로세서의 실행이 location 오퍼랜드로 이동함. call 명령어를 뒤따르는 명령어의 주소(return address) 스택에 push.

(4) ret :

함수로부터 리턴(return), 스택에서 return addresspop. 프로세서의 실행이 return address로 이동함.

 

'개발 > 보안' 카테고리의 다른 글

2024.06.03 악성코드 분석 2일차  (0) 2024.06.03
침탐 24.05.31  (0) 2024.05.31
2024.05.23 동적 분석  (0) 2024.05.27
abex`crackme-05  (0) 2024.04.15
NotePade.exe 분석  (0) 2024.03.25