2. 모의해킹 환경 및 기본구조
vmware 환경에서 kali linux로 하기 위해 설치

https://knowledge.broadcom.com/external/article?articleNumber=368734

https://www.kali.org/get-kali/#kali-virtual-machines
Get Kali | Kali Linux
Home of Kali Linux, an Advanced Penetration Testing Linux distribution used for Penetration Testing, Ethical Hacking and network security assessments.
www.kali.org
인터넷 연결 잘 되어있음 확인

처음에 칼리를 설치하면, 한글 폰트가 없기 때문에
sudo apt update 명령어를 사용하여 업데이트 패키지를 설치(확인)하고
sudo apt install fonts-nanum -y 로 나눔 폰트를 설치
칼리 리눅스는 데비안 기반의 구조.

$ < 이건 내 홈 디렉토리에 있다는 뜻 (윈도우의 C드라이브 users)
리눅스 기본
sudo dhclient - dhcp로 자동ip가 할당이 안 될때(리눅스 인터넷이 안될 때)
후 ping www.google.com 으로 인터넷 되는지 확인
sudo apt < 패키지를 업데이트 하거나 설치할 때
apache2 start를 하고 netstat으로 보면
http (80포트) 열고 있는것을 확인 할 수 있음

내 pc(vmware외 내 윈도우)에서 칼리 리눅스의 ip에 접속하면 열려있는 포트에 접속할 수 있음

칼리에서 실행하고 있는 아파치2 서비스에 대한 것은

/var/www/html index.html 파일에서 확인할 수 있고 이에 대한 로그는
/var/log/apache2 에서 access.log에서 확인 가능
html폴더에 예를 들어 test.html 파일을 추가하면

따로 테스트페이지로 들어갈 수 있음
외부 윈도우 환경에서도 마찬가지로 접속 가능

index.html 의 내용을 바꾸면, 기본 페이지도 바뀌게 됨

FTP - 파일전송
HTTP - 웹서비스 - 80/TCP
SSH - 원격접속
Telnet - 원격접속, 파일전송
Snmp - 장비로그전송
SSH 활용

칼리 리눅스에서 SSH 포트를 열어놨고, 내 윈도우 cmd에서 ssh로 칼리리눅스 네임과, ip를 입력하면

내 원도우 cmd창에서 칼리 리눅스 환경 들어갈 수 있다 (원격)
ssh 192.168.136.128을 하면 나는 현지 rlawh<에서 접속하기 때문에 앞에 kali@를 붙여 kali로 로그인을 하여 접속
서버는 IDC나 다른 보관 공간에 있기 때문에 따로 접속pc에서 들어간다
접속PC(관리자) ---- proxy서버(접근통제) ---- ssh -> 서버 접속
proxy서버를 사용하여 접근통제를 해 로그(누가 접속을 했는가)를 기록

윈도우 cmd 환경에서도 마찬가지로 kali의 root권한 획득할 수 있다.
처음부터 root 권한으로 들어갈 수 도 있다.
하지만 처음에 들어가면 permission이 denied가 되기 때문에 kali 내부에서 루트로 접근을 할 수 있게 변경해줘야한다.


RootLogin 앞에 있는 주석을 제거
그럼 cmd환경에서 원격 접속을 할 때 바로 root로 접속이 가능하다
(하지만 이 방법은 보안상 좋지않아서 사용자로 로그인 후 sudo su - 를 통하여 권한을 변경하여 사용하는게 좋다.

FTP 서버 익명구축
vsftp 설정파일로 이동하여 vsftpd.conf를 편집
~/etc 공간에 있음

vsftpd를 편집하기 전에 칼리 리눅스 공격서버를 하나 더 만든다. (VM ware에서 칼리 전원 off한 상태에서 clone하여 똑같은 상태로 만들었음)

그 다음 ip를 확인하여 서버에 접속 할 ip를 확인
(기존에 있던 서버의 ip는 192.168.140.135)

nmap으로 21번(ftp) 포트가 열려있는것을 확인했고
ftp사용하여 원격으로 접속해보겠다.

접속자 이름은 어나니머스(익명)으로 했고 로그인에 실패하였다.
기존 서버에서 익명으로의 접근을 허용하지 않기 때문.
아까 확인했던 기존서버의 vsftp 설정파일로 이동하여 vsftpd.conf를 편집하여
익명에 대한 허용을 NO에서 YES로 바꿔준다.

그리고 다시 어나니머스로 접속을 하면

로그인에 성공을 한 것을 알 수 있다.
다시 vsftpd.conf 를 편집하여

ftp로 접속 했을 때 어나니머스 홈 디렉토리(anon_root)를 홈에있는 칼리로 기본 루트 디렉토리로 설정을 한다.

그럼 어나니머스로 ftp 접속을 하여 dir명령어를 사용하여 디렉토리들을 보면 원격 서버 칼리리눅스의 홈 디렉토리들을 볼 수 있다.
칼리리눅스의 vsftp를 익명으로 연결하여 루트 저장소를 지정하였는데
FTP 서버를 사용함으로써 사용했던 악성코드나 로그파일 등을 회수할 수 있다.
Kali DPKG 패키지 관리
()

sudo dpkg -L apache2 명령어를 사용하면 apache2를 다운로드할 때 다운받은 파일들이 어디에 있는지 다 볼 수 있다.
윈도우에 경우에도 exe파일을 실행하면 다양한 디렉토리에 다운로드가 되는데 리눅스도 마찬가지인 형태이고
/usr/share 이 윈도우의 program file이랑 비슷하며 프로그램과 관련된 파일들이 설치가 되며
/usr/sbin 이라고 하는곳이 프로그램의 실행파일들 (exe파일)이 모여있다고 볼 수 있다. (실행과 관련한 파일들도)
/etc에는 프로그램의 설정 파일들이 있다.
sudo dpkg -s vsftpd 명령어를 사용하여 패키지의 정보를 파악할 수 있다.

sudo dpkg -r vsftpd로 인스톨되어있던 파일을 전부 지울 수 있음


강제로 지워야 하는 것들은 -P옵션을 사용하여 전부 지울 수 있다.
deb파일을 직접 설치하여 다운로드 해보자
dpkg로 설치할 수 있는 파일이 deb파일이다.

nessus 라는 deb파일을 다운로드 할 건데, nessus프로그램은 취약점 분석할 때 사용하는 도구인데 미리 한번 다운로드 한
다.
리눅스-데비안 (칼리리눅스) 버전을 다운로드

다운로드를 한 뒤

홈 디렉토리에 다운로드 디렉토리를 가면 deb파일이 잘 다운로드 된 것을 볼 수 있다.

dpkg -I 명령어를 사용하여 다운로드 받은 Nessus deb파일의 정보를 알 수 있다.
패키지의 정보를 다 알 수 있다.
dpkg -i 명령어를 사용하여 다운받은 nessus를 설치한다.

다운받은 nessus 또한 dpkg -s와 dpkg -L로 정보를 볼 수 있다.
// 리눅스 기본 명령어 //
Find와 locate를 많이 사용
// locate 명령어 //

이름에 ftp가 포함되어있는 디렉토리든 파일이든 전부 보여주는 것 같다. (문자열)

1169개 카운트 된다.
locate를 통해 찾고자 하는 것들이 빠르게 나타나기 때문에 특수한 이름을 찾을 때 사용하면 좋을 것 같다.
만약 locate로 검색이 되지 않는다면
sudo updatedb로 설치된 것이나 작성된 것들이 검색할 수 있는 db에 반영되도록 업데이트를 해주면 반영이 된다.
// Find 명령어 //

퍼미션 디나이 당하는 것 은 저기에 있을것으로 추정이 되지만 읽기가 불가능하여 나온거고
"ftp"만 있는 디렉토리나 파일을 찾는다.
locate와 같이 검색하려면 "*ftp*"으로 검색하면 되겠다.
여기에 -type 옵션을 줘서 "디렉토리"만 찾고 싶은 경우에는
sudo find / -type d -name "ftp" 를 사용하여 타입이 디렉토리 인것만 찾을 수 있다.

옵션을 더 줘서 sudo find /usr/share -type d -name "ftp"를 사용하면 찾기를 원하는 경로도 추가할 수 있다.
홈 디렉토리 안에서 칼리 유저가 가지고 있는 ~~~.txt 파일만 찾을 수 있다.

그리고 수정된 날짜 기준으로 찾을 수 있는데

-mtime 으로 7일 이내의 수정된 텍스트 파일을 찾아낼 수 도 있다.
sudo find / -size +10M -name "*.txt"
으로 사이즈가 10메가바이트 이상인 텍스트 파일을 찾을 수 도 있다.
// df 명령어 //
저장소를 확인하고 싶을 때 df 명령어를 사용

sudo df -h로 human이 볼 수 있는 형태로 나타난다.

sudo df -i 로 inodes를 볼 수 있다.
inodes는 각 파일과 폴더가 가지는 ‘메타데이터 저장 공간' 으로
- 파일의 크기
- 권한 (rwx)
- 소유자/그룹
- 생성/수정 시간
- 파일이 저장된 블록 위치
- 파일 유형
- 하드 링크 등
이 있고 inode를 다 사용하게 된다면 디스크에 공간이 있어도 파일을 만들 수 없다. (주민번호 개념?)

보안관점에서 본다면, 침해사고가 발생 했을 때 악성코드(용량을 채워 가용성을 저하시키는)의 분석을 했을 때
특정 디렉토리의 사용량이 증가했거나 그 전보다 공간이 많이 적어지는 것을 판단할 때 df명령어를 사용
// du 명령어 //
각각의 정보 (디렉토리 등의) 크기 등의 정보를 알 수 있다

sudo du -hsc *을 이용하여 현재 디렉토리의 용량을 볼 수 있다.
h : 사람이 볼 수 있게 (k, m) 단위를 보여줌
s : 요약
c : 현재 작업 디렉토리

// ncdu 명령어 //
디스크 사용량을 확인하는 명령어 (유틸리티)
sudo ncdu를 사용하면

이런식으로 용량에 대한 목록을 볼 수 있다.
// free 명령어 //
메모리 용량들을 확인 할 수 있다

-m 을 붙여 메가바이트 단위로 출력할 수 있다.

// top 명령어 //
sudo top 명령어로 윈도우의 작업 관리자로 현재 cpu의 사용 현황 등을 볼 수 있다.

어느 프로세스에서 공격이 들어올 수 있는가, 메모리 등이 사용이 증가하는 가 등 볼 수 있다
sudo htop 으로 더 직관적으로 볼 수 있으며 sort, search등 기능을 사용할 수 있다.
