본문 바로가기

System Hacking

(18)
1일차] 환경 구축 및 컴파일 과정 실습 환경 : Red Hat 6.2 버전 ( 메모리 보안기법이 적용이 되어있지 않은 환경) 리눅스를 위한 부트 로더가 grub가 아닌 LILO이기 때문에 직접 운영 체제를 입력해 줘야 한다. linux-up을 입력해주자. # ID - root, PW - 1234 ( root 계정으로 실습을 진행해야 한다. ) NASM 다운로드 방법 #> wget http://www.nasm.us/pub/nasm/releasebuilds/0.99.05/nasm-0.99.05.tar.gz --> wget으로 다운로드 받음. #> tar xvfz nasm-0.99.05-xdoc.tar.gz #> cd nasm-0.99.05 #> ./configure #> make #> make install #> cp nasm /usr/bi..
14~15일차]PAM개념 PAM이란 ? Linux Pluggable Authentication Modules의 약어로 리눅스 PAM은 리눅스 또는 GNU/kFreeBSD 시스템에서 애플리케이션과 서비스에 대한 동적 인증을 제공한다. 리눅스-PAM은 인증 작업을 다음 4가지 독립적인 관리 그룹으로 분리한다. 1). 계정 모듈(account module)들은 명시된 계정이 현재 조건에서 유효한 인증 목표인지를 검사한다. 이것은 계정 유효기간, 시간 그리고 사용자가 요청된 서비스에 접근 가능한지 같은 조건을 포함한다. 2). 인증 모듈(authentication module)들은 비밀번호를 요청하고 검사하는 것 같이 사용자의 신원을 확인한다. 또한 인증 정보를 keyring 같은 다른 시스템들에게 전달한다. 3). 비밀번호 모듈(pa..
8~10일차] IPTABLES IPTABLES?? - 커널의 IP 패킷 필터링(Packet Filtering) 기능을 하는 Netfilter에 규칙을 설정하고 관리하는 도구 - '체인(Chain)'이라고 불리는 방향성을 가진 '규칙(Rule)'을 연결한 테이블(table)이다. *Packet Filtering?? 네트워크를 통과하는 모든 패킷들을 패킷 헤더에 출발지와 목적지 그리고 어떤 프로토콜을 이용하는지에 관한 정보를 담고 있다. 이러한 패킷의 헤더 정보를 보고 호스트로 들어오는(INPUT)패킷과 나가는 패킷(OUTPUT), 통과하는 패킷(FORWARD)패킷 등을 검사하여(TABLE과 비교)불필요한 패킷이나, 잘못된 패킷을 폐기(DROP)하고 규칙과 일치하는 패킷만 허용(ACCEPT)시키는 기능을 한다. 체인의 종류(기본) (체인..
4일차~5일차] 보안가이드[서비스 관리] 1. finger 서비스 비활성화 1). 취약점 개요 *Finger(사용자 정보 확인 서비스)를 통해서 네트워크 외부에서 해당 시스템에 등록된 사용자 정보를 확인할 수 있으므로, 사용하지 않는다면 해당 서비스를 중지해야 한다. *Finger : who 명령어가 현재 사용 중인 사용자들에 대한 간단한 정보만을 보여주는 데 반해 finger 명령은 옵션에 따른 시스템에 등록된 사용자뿐만 아니라 네트워크를 통하여 연결되어 있는 다른 시스템에 등록된 사용자들에 대한 자세한 정보를 보여준다. #>who를 이용한 사용자 정보 확인 #> finger를 이용한 사용자 정보 확인 2). 점검 방법 #> cd /etc/xinetd.d 디렉터리에 finger 파일이 있는지 확인 3). 조치 방안 만약 finger 파일이 있..
3일차] 보안가이드[파일 및 디렉터리 관리] 1. root 홈, 패스 디렉터리 권한 및 패스 설정 1). 취약점 개요 root 계정의 PATH 환경변수에 "."(현재 디렉터리 지칭)이 포함되어 있으면, root계정의 인가자로 인해 비의도적으로 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있다. 즉, "."맨처음(가장위험) 이나 중간에 들어가 있으면 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 보다 우선하여 현재 디렉터리에서 변수를 사용하기 때문에 악의적인 변수를 만들어 놓는다면 위험할 수 있다. 2). 점검 방법 #> echo $PATH 를 입력하여 환경변수에 "."이 포함되어 있는지 확인한다. 3). 조치 방안 만약 $PATH에 "."이 포함되어 있다면 수정해..
1~2일차] 보안 가이드[계정관리] 1. root 계정 원격 접속 제한 1). 취약점 개요 root계정은 시스템을 관리하는 하주 중요한 계정이기 때문에 root계정의 원격 접속 허용은 공격자에게 더 좋은 기회를 제공할 수 있으므로 root의 원격 접속은 금지하여야 한다. 2). 점검 방법 1). #> vi /etc/pam.d/login 해당 파일에 빨간박스 2행의 내용이 주석처리 되어있다면 root보안 인증을 하지 않아 취약한 것이고, 주석이 되어있지 않아야 root 인증 을 함으로 보안이 되어있는 것이다. 2). #> vi /etc/securetty 파일 내 *pts/x 관련 설정이 존재하는 경우 위의 pam 모듈 설정과 관계 없이 root 계정 접송을 허용하므로 반드시 securetty 파일에서 pts/x 관련 설정 제거가 필요하다. ..
정보보안5 (13,14,15) - 시스템 콜 (systemcall) 2. 시스템 콜 시스템 호출(system call)은 운영 체제의 커널이 제공하는 서비스이다. 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 보통 c나 c++같은 고급언어로 작성된 프로그램들은 직접 시스템 호출을 사용할 수 없기 때문에 고급 API를 통해 시스템 호출에 접근하게 하는 방법이다. - 리눅스 : 시스템 콜 (커널이 제공) - 윈도우즈 : WIN API ssize_t write(int fd, const void *buf, size_t count); ---> write systemcall의 구조 위와같이 시스템 콜을 직접이용하여 작성하면 되는데, 구글에 systemcall tables를 검색하여 고유의 번화와 각각레지스터의 인자값을 적절히 넣으면 된다. return값이 있는경..
정보보안5 (16) - 디버거 ! 디버거 사용법 - De + Bugger - Bug : 벌레( 그레이스 호퍼 ) - 프로그램에 오류를 일으킬 수 있는 존재 (Bug) - De Bug -> DeBugging -> DeBugger (벌레를 잡음 즉, 오류를 잡는다.) - linux 에는 GDB가 있다. gcc -o myshell myshell.c -g --->> -g명령어를 통해 디버거된 파일을 만든다. ! 디버거를 통한 프로그램의 실행 #> ./myshell -> execve -> 프로세스 - 일반적인 경우 프로세스 제어 불가능 (접근 불가능) #> GDB -> ./myshell -> 프로세스 - 디버거를 통해 프로세스를 직접 제어 (접근) 1. 코드 확인 - C로 작성된 -> main - assembly 작성된 -> _start (g..