●53일차(20250226053.php)
미션1
본인서버 점검
92번 본인 계정 백업되도록 설정후 94로 백업되도록 각자 조치
su msh
cd public_html
mkdir msh
cd ~
nano backup.sh
[backup.sh]
------------------------------------------------------------------------------
#!/bin/sh
set $(date)
fname="backup-msh$1$2$3.tar.gz"
tar cvzf /home/이니셜/public_html/(백업 폴더)/$fname --exclude=/home/이니셜/public_html/(백업 폴더) /home/이니셜/public_html
tar cvzf /home/msh/public_html/msh/$fname --exclude=/home/msh/public_html/msh /home/msh/public_html
------------------------------------------------------------------------------
chmod 755 backup.sh
./backup.sh
nano rsync.sh
[rsync.sh]
---------------------------------------------------------------
#!/bin/sh
rsync -avz /home/msh/public_html/msh 192.168.0.94::ip92
rsync -avz /home/이니셜/public_html/(백업 폴더) 192.168.0.94::ip92
---------------------------------------------------------------
chmod 755 rsync.sh
./rsync.sh
#P9.exe
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int hidden_value = 0xdeadf00d;
int main(int argc, char *argv[]) {
int a, b, c, value;
char buf[100];
printf("Input password: ");
gets(buf);
if (strncmp(buf, "reversing",9) != 0) {
printf("Invalid password");
return -1;
}
printf("Hidden value: 0x%x\n", hidden_value);
return 0;
}
> 컴파일 옆에 데스크탑 모양 클릭하면 실행됨
(strncmp(buf, "reversing",9)
> 입력한 값과 reversing이 같으면 0을 return한다
> 같지 않으면 1이나 2이상이 나오겠지
> 참으로 넘어가니 invalid password가 나오는것

F9 > 입력 > enter > F8
ZF(Zero Flag)
원래 1
enter > 0 > 초기화
test eax에서 1로 바뀜 > 1로 플래그를 설정한거임

> 초기에는 1로 되어있음
reversing을 입력 후 enter
> call JMP .&strncmp로 이동 > zf가 0으로 초기화
> F8 > test eax를 만나면 > zf가 1로 바뀌게 됨
비교해서 값이 일치하면 zf : 1
비교해서 값이 일치하지 않으면 zf : 0
이때 0에서 1로 바꿔주면
> hidden_value : 0xdeadf00d 값이 나올 수 있게 된다
test eax 바로 다음 je p9.401559에서
ZF 더블클릭 > 1로 바꿔줘
> mov eax 에서 hidden value가 나오게 됨
명령어 정리
mov eax, ebx EBX 레지스터 내의 값을 EAX 레지스터로 복사하는 명령
lea eax,[ebx+8] EBX+8을 EAX에 저장함
test eax,eax 두개의 오퍼랜드를 비교 (AND 연산을 수행해보고)
leave 함수에서 사용한 지역변수 스택을 비움
ret 스택에 저장된 주소로 복귀
jmp addresses 무조건 해당 주소로 옮겨감
F9 종단점 있는 곳까지 실행
F4는 선택까지 실행
F8은 함수 안으로 들어가지 않고 실행
F7은 함수안으로 들어가서 실행
Ctrl + F2 다시 실행
Ctrl + G 주소 (따라갈 표현식 입력)
Shift + D 문자열 참조
#pep
교재 리버싱
> 38p ~ 44p > pep/8로 해보자
object code > 51 00 07 51 00 08 00 48 69 zz
> build > load > excute 해주면 hi가 나옴
operand > cmp, jne, push,...
지금까지 봤던건 직접주소방식이었다
> 주소로 가면 바로 나옴
간접주소방식은 주소로 가면 다른 주소를 안내해주고 그 주소로 가면 찾는 데이터가 나옴
#프로젝트(트로이 목마 만들기)
해커가 릴레이 서버에 명령어를 전달
> 릴레이 서버는 피해자의 데이터를 수집
> 중계서버를 중간에 둔것
피해자가 자바 업데이트를 위장한 웹페이지에 들어가게 됨
> 악성 파일이 설치가 된다
> 악성코드가 심어지면 중계서버랑 연결
릴레이 서버는 파이썬
페이크 웹페이지는 자바
[step1]
일지 쓰기 웹사이트 하나 만들기
이름 메모 날짜 등록 > 끝날때까지 저장 예정
[step2]
브릿지 어댑터로 설정 가능
빅팀 서버 준비 : IP 할당
칼리 서버 준비 : IP 할당
해커는 공격은 칼리 중계서버 설치 밎 작동 여부 확인
빅팀은 서버에 자바 다운로드 자동으로 되게 필요한 자료 찾기
자바는 자바 설치 및 이클립스 설치
Editplus로 자바 확인
집에 있는 자바 교재 있으면 가져와서 소스코드 분석
#코드 분석
messageRelayServer.py
> 먼저 작동됨
> from packet import Packet
> 패킷을 불러온다
victim: runVirus > 포트 5715
Client: Hacker > 포트 5720
packet.py
> packet class가 들어있음
#릴레이 서버 세팅
5715 포트 추가
5720 포트 추가
22 포트 추가
> NAT
> 릴레이 서버
> 아나콘다 리눅스 버전 깔아줌
> 용량이 안돼서 안깔림
하드디스크 추가
fdisk -l
fdisk /dev/sdb
n
p
엔터
엔터
엔터
w
mkfs.ext4 /dev/sdb1
vgs 로 여유공간 확인
pvcreate /dev/sdb1
y입력
vgextend /dev/ubuntu-vg /dev/sdb1
lvextend -L +25G /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/ubuntu-vg/ubuntu-lv
df -h