Security_RNRF
모듈 개발 - 이론 본문
* 모듈 개발 방법론
: 모듈 개발에 있어서 알아야 할 것들, 절차, 팁(= Know, Process, Tip)을 설명해본다. 그리고 추가적으로 모듈 유형별로 어떻게 개발하는지를 설명할 것이다
-> exploit 모듈과 auxiliary 모듈, 두 가지에 대해서만 설명을 이어나갈 생각이다. 6가지 정도의 모듈을 개발할 생각이다. 하나의 모듈 단위를 개발하는것이 아니라 각각 6개 중 4개 정도는 기능이 될 것이고, 2개 정도가 실질적인 모듈이 될 것이다. 그리고 모듈 개발 이후에 인터페이스를 하나 만들어 볼 것이다. mini msfconsole이라고 해서 간단한 콘솔 기반의 인터페이스를 만들어 볼 것이다
-> 메타스플로잇 개발자 문서가 존재하며, 이름은 "msfdev"라는 문서가 존재한다. 3.0 때부터 Perl, C 였던것이 Ruby로 싹 바뀌었는데 그 때 개발팀에서 개발자 문서를 하나 공개했는데 그것이 바로 "msfdev"이다. 이 문서에서 개발자들이 개발할 때 반드시 지켜줬으면 하는 내용들이 위에서 보는 4가지가 포함되어 있다
-> 사실 너무나 뜬구름 잡는 4가지 이야기이다. 가이드 라인이라기 보다는 개발하기 전에 가져야 할 마음가짐 정도로 생각하면 될 것 같다. 그래서 좀 더 순차적으로 정리된 "개발 방법론"(= 위의 사진)을 확인해보면 좋다. 여기서 모듈 개발에서 "모듈 선택 - 기능 명세 - 공통 기능 구현 - 테스트"까지를 많이 설명할 것이다. 즉, 기능 구현의 관점을 많이 설명할 것이다. 세부 기능 구현에 대해서는 최대한 기능 중심적으로 소개할 생각이며 원하는 기능을 사용하려면 이렇게 작성하면 된다는 구체적인 가이드를 설명할 생각이다.
: 모듈 개발 방법에 대해서 알아본다
-> 모듈을 개발하려면 위의 내용들을 고민해봐야 한다
-> 이전에 설명했듯이 모듈은 디렉토리 계층 구조로 되어 있다. 라이브러리 같은 경우에도 디렉토리만 잘 찾아가면 실제로 코드에 믹스인이 include 되어 있다하더라도 결국엔 계층 구조를 따라간다고 설명했었다. 즉, 디렉토리만 잘 쫓아가도 라이브러리 코드를 쉽게 찾을 수 있다. 모듈도 똑같은 원리이다. 예를 들어서, msfconsole에서 "use freeftpd"라고 쓰면 바로 사용을 할 수 없다. "use /exploits/windows/ftp/freeftpd_pass"와 같이 경로를 지정해줘야 한다. 이것이 결국 계층 구조를 의미한다. 처음 msfconsole을 실행하면 이러한 계층 구조에 대한 정보를 로드하는데, (모듈 디렉토리에 있는 정보를 긁어와서 로드한다) 만약에 본인이 개발한 익스플로잇이 윈도우 기반, ftp 프로토콜을 이용하고, freeftpd라는 프로그램에 존재하는 취약점을 기반으로 만들었다면 "exploit/windows/ftp/" 폴더 안에 만든 모듈 파일을 넣어주면 끝이다. 넣어주고 msfconsole 로드해주면 동작을 한다. 마지막 "예를 들어" 부분의 설명도 똑같은 설명이다
-> 다음으로 "뼈대 코드"인 "스켈레톤"이라고 하기도 하고, "템플릿(= template)"라고 부르기도 하는것을 알아본다. 템플릿 코드를 작성해놓고 거기 안에다가 내용만 추가하면 되는 구조이다. 기본적으로 익스플로잇을 작성할 수 있게 하는 큰 틀인 것이다. 뒤에서 익스플로잇을 개발할 때 쓸텐데 (메타스플로잇 사이트에서 제공한 가이드 코드이다). 기본 틀을 가지고 살을 붙여가면서 개발하면 되는 것이다
-> 다음으로 "옵션"이 있는데 옵션은 이전에도 설명했듯이 생각보다 중요한 부분이다. 메타스플로잇 개발자 입장이 아닌 사용자 입장에서 봤듯이 "show options, show advanced, show missing"으로 옵션을 확인할 수 있다. "show options"는 기본(= Default) 옵션을 확인하는 것이고, "show advanced"는 고급 옵션을 확인하는 것이고, "show missing"은 "required"와 같이 반드시 설정해야 되는 옵션인데 설정하지 않은 옵션들을 확인할 수 있다
-> 다음으로 개발자 관점에서는 크게 4가지로 볼 수 있다. "ModuleDatastore, active_module 접근자, session.exploit_datastore, framework.datastore"가 있는데 같은 맥락이라고 보면 된다. 접근 방식이 4가지가 있는것 일 뿐이다. 대부분의 경우에서는 "ModuleDatastore" 사용을 권장한다. "irb" 모드에서 혹은 인터페이스 개발하고 있을때 익스플로잇이 있다고 한다면 exploit.datastore에 rhost라고 명령하면 현재 설정한 rhost(= remote host) 값을 확인하거나 수정할 수 있다. "active_module 접근자"의 경우에는 irb 모드에서 "active_module" 이라고 치면 나타난다. "session.exploit_datastore"는 세션을 획득 했을때, 그리고 "framework.datastore" 프레임워크를 이용해서 여러 가지 실행시켜 놓은 뒤, irb 모드로 들어가서 확인하면 현재 데이터 스토어에 등록된 것을 확인할 수 있다
-> 앞에서 "def initialize"에 들어가는 옵션 값들은 "datastore"에 들어가는 것이다. 그래서 처음에 msfconsole을 실행하면 프레임워크라는 하나의 기능의 단위가 생성된다. 이게 모든것의 부모격이 되는것이고, 이것을 생성하고 익스플로잇도 만들고, 페이로드도 만들고, nop도 만들고 등을 한다. 생성된 익스플로잇 안에서는 만약 특정 모듈을 가져오면, 전역 데이터 스토어에 있는 정보를 모듈에 가져와주고, 모델 자체의 데이터 스오터도 따로 있는데, rhost 정보 등등의 정보들을 모두 담고 있는 데이터 구조가 생긴다. 이것을 가지고 "show options"에서 상호 작용을 하는 것이다
-> 다음으로 설명할 것은 믹스인을 어떤것을 선언하냐에 따라서 옵션이 달리지는데 믹스인에서 제공하는 옵션을 그대로 사용해도 되고, 필요없는 경우에는 사용을 하지 않아도 된다. 혹은 믹스인에 추가해도 제공되지 않는 옵션 같은 경우에 별도로 새로운 옵션을 등록해야하는데 이것을 가능하게 해주는 것이 "register_options, register_advanced_options, deregister_options"이다
-> 이것은 코드상에 추가해줘야 한다. 예를 들어서, 새로운 것을 등록하고 싶다면 위에서 보듯이(register_options, register_advanced_options) 코드들을 입력해주면 된다. 해제하고 싶다면 "deregister_options"를 이용하면 된다. 예를 들어서 freeftpd_pass에서 "PASS" 부분에 "deregister_options"가 있는것을 볼 수 있다. PASS dhqtusdmf dnjsfosms "Ftp" 믹스인에 추가하면 자동으로 기본 옵션으로 되도록 되어 있는데 이것을 해제하는 기능이다. 왜냐하면 익스플로잇에 패스워드가 필요 없기 때문이다. "Anonymous" 연결에 대한 취약점을 이용하는 것이기 때문이다
-> 다음으로 추가하고자 하는 옵션 형식에 맞는 이름을 적어주면 된다. 앞에서 봤던 "register_options"에서 봤던 "OptString.new(...."과 같이 그에 맞는 틀이 있다. 추가하고자 하는 옵션 형식에 맞는것을 선택하면 된다. "new"하고 옵션의 이름, "true/false"는 모듈 실행시 반드시 설정해줘야 되는지, 아닌지, "description"은 옵션에 대한 설명, "value"는 옵션의 기본 값이다
-> "옵션 타입"은 "/lib/msf/core/options_contatiner.rb" 파일에 정의되어 있다
-> 사실 어떤 옵션을 추가할 때 명확한 가이드는 존재하지 않는다. 기본적으로, 논리적으로 생각했을때 본인이 추구하고자 하는 옵션이 어느 유형에 속하는지 생각해보고 사용하면 된다
-> 잠깐 확인해보고 다음것을 진행해본다
->> "cd /usr/share/metasploit-framework/modules/exploits/windows/ftp" - Enter
->> "vi freeftpd_pass.rb" - Enter
->>> 확인 결과, "FTPPASS"라는 옵션이 해제된 것을 볼 수 있다. 해당 믹스인으로 들어가서 기본 등록법을 추가적으로 확인해본다
->> "cd /usr/share/metasploit-framework/lib/msf/core/exploit" - Enter
->> "vi ftp.rb" - Enter
->>> 확인 결과, 원래는 "register_options"의 "OptString.new"의 옵션이 "false"로 되어 있지만, "freeftpd_pass.rb"에는 "true"로 되어 있는것을 볼 수 있다. 즉, 수정이 가능하다는 것이다.
-> 결국 만들고자 하는 기능을 미리 구현되어 있는 모듈을 가져와서 사용하면 된다
-> 추가적으로 본인이 개발한 모듈이 제대로 작성되었는지 확인하려면 msfconsole을 한 줄 실행해도 된다. 또는 리소스 파일을 이용해도 된다. 또는 Pry를 이용해서 본인이 원하는 데이터 구조를 잘 만들었는지 확인하면 된다. 원격 코드 같은 경우에는 wireshark 체크를 통해서 직접 패킷을 확인해보면 된다
-> 여기까지는 큰 의미에서 (= 넓은 범위에서) 모듈 개발에 어떻게 접근할 수 있는지를 설명했다
* 모듈 유형별 개발방법
: 이번에는 모듈 유형별로 어떻게 개발할 수 있는지를 알아본다
-> 개발의 관점에서 exploit이 가장 어렵다고 할 수 있다. exploit을 만들 줄 알면 auxiliary 개발은 크게 어렵지 않을것이다. 그리고 그 다음으로는 post 모듈이 있을것이다.
-> 실습을 하기전에 계속해서 강조하는게 있다. 메타스플로잇 모듈 개발 과정을 통해서 익스플로잇을 완벽하게 짤 수 있다는 생각은 큰 착각이다. 메타스플로잇도 결국엔 도구에 불구하기 때문이다. 즉, 지식 없이는 도구를 활용할 수 없다는 것이다. 그러한 맥락에서 봤을때 exploit-development, 익스플로잇을 제작한다는 것은 리버싱은 기본이고, 취약점에 대한 이해도, 취약점에 대한 유형, 메모리 보호 기법에 대한 이해, 프로그래밍 능력, 어셈블리어, 스크립트, C언어 등등을 알고 있어야 한다. 더붙여 말하면 본인이 찾으려는 취약점이 어떤 프로그램이냐에 따라서 알아야하는 언어의 종류도 다양할 것이다. 아주 방대한 양의 지식이 필요하다는 것이다
-> 지금부터 설명할 익스플로잇 모듈 개발은 "PoC" 코드가 있다는것을 전제로 설명할 것이다. "PoC" 코드는 취약점을 유발할 수 있는 코드를 찾았다고 했을때, 그것을 가지고 계산기를 실행할 수 있는 (꼭 메타스플로잇으로 작성하지 않고 Perl, Python으로 작성했든 상관없다) 증명 코드가 하나 있는 상태에서 메타스플로잇으로 제작하는 관점이라고 생각하면 된다. 사실 취약점을 찾는 단계에서 메타스플로잇을 처음부터 사용해서 익스플로잇 하나씩 작성해가면서 테스트를 잘하지는 않는다. 익스플로잇을 미리 만들어놓고 익스플로잇 포팅?을 하는데 메타스플로잇을 사용한다. 왜냐하면 스크립트 언어로 작성해서 기계어 하나씩을 추가해가면서 익스플로잇을 짜는게 더 빠르고 효율적이기 때문이다. 굳이 메타스플로잇을 사용할 필요가 없는것이다. 즉, 익스플로잇 개발 단계부터 메타스플로잇을 사용하는게 아니라, 대부분의 경우에는 익스플로잇을 만들어놓고 여러 운영체제에서 잘 돌아가도록, 사용하기 쉽도록 만들기 위해서 메타스플로잇으로 포팅하는게 더 많다. 그렇기 때문에 포팅이라고 생각해도 포팅을 하기 위해서 메타스플로잇에서 제공되는 어떤 기능이 있는지를 알아야 한다. 어떤 기능을 사용하며, 어떤 순서로 작성하면 되는지를 설명할 것이다
-> 익스플로잇 모듈 개발이라고 별 다를것은 없다. 위의 1~5 단계 과정을 보면 된다
->> 1단계에서 말하는 "원격" 방식은 통신 기능이 들어가야하며, "로컬"은 세션을 끼고 가는것이다. 여기서 세션을 끼고 간다는 말은 리모트 익스플로잇이 실행을 하고, 리모트 익스플로잇이 성공해서 세션을 획득하고, 실행하는 모듈이다. 사실 포스트 모듈과 약간 비슷하다고 할 수 있다. 왜냐하면 포스트 모듈은 세션을 전제로 하고 있기 때문이다. 하지만 차이점이라고 하면 로컬 익스플로잇은 "권한 상승"에 초점이 맞춰져 있고, 포스트 익스플로잇은 "정보 수집, 지속적인 접근 권한 유지" 등의 기능들을 담고 있다. 그리고 포스트의 경우에는 어떠한 코드를 수행하는것만 있다면 로컬 익스플로잇은 취약점이 있다. 즉, 포스트에는 취약점이 없고, 익스플로잇에는 취약점 코드가 들어가 있다는 차이점도 있다
->> 2~3단계는 공격 코드에 필요한 기능을 적어보는 것이다. 그리고 그러한 기능 구현 및 불러오기를 진행하면 된다
->> 4단계는 조금 별개의 의미이다. 이 부분은 메타스플로잇이라기 보다는 리버싱의 관점이다. 코드 분석과 패킷 분석이 병행되어서 하는 작업이다. 그래서 메타스플로잇의 영역이라고 하기 보다는 리버싱의 영역이다
->> 5단계의 검증은 디버거를 사용할 수 도 있고, 와이어샤크를 이용할 수 도 있다. 가장 정확한 검증은 공격이 성공해서 세션을 획득하는것을 확인할 수 있으면 된다
->> 다음으로 "Stance"가 있는데 크게 두 가지가 있다. 크게 사용하지는 않지만 익스플로잇 코드 분석을 하다보면 "Aggressive" 바로 공격이 있고, "Passive"는 서버에 연결이 하고, 연결이 다 될 경우에만 다음 익스플로잇을 보내는 방식이다.
-> 익스플로잇 모듈 개발을 할 때 "랭킹"이라는 것을 적어줘야 한다. msfconsole에서 "Search"로 모듈 검색을 해보면 "Rank"라는게 나온다. 이 모듈이 어느 정도의 성공률을 보장하느냐를 나타내는 지표라고 생각하면 된다. 위의 랭킹으로 책정된다고 보면 된다
-> 래퍼런스 식별자는 개발할 때 어떤 취약점이 있으면 취약점에 넘버링이 되어 있는 경우가 있다. 취약점 기준에 따라서 취약점 번호가 매겨지는 것이다. 메타스플로잇 코드를 작성할 경우에는 이러한 취약점 넘버 번호를 사이트에 들어가서 검색해보면 실행하고 있는 모델의 정보를 확인할 수 있다
-> 계속 강조한 것처럼 믹스인만 제대로 잘 사용할 줄 알더라도 크게 어렵지 않다. 이거는 가장 많이 익스플로인 모델에서 가장 많이 쓰이는 믹스인 이라는 거 정도만 알고 넘기면 된다
-> 모듈 코드 안에서 접근자, 메소드를 자주 쓰는게 있다. 익스플로잇 코드에서 많이 쓰는 것들이 nop를 만든다거나, target에 대한 정보, handler, stack 조정 등이 있다. 이러한 접근자나 메소드는 결국에 믹스인에서 온다. 믹스인 안에서 제공하는 메소드나 접근자를 이해하면 작성하는데 쉽다
-> 페이로드 접근자 및 메소드도 위의 방식대로 작성해서 페이로드를 생성할 수 있다는 것이다. 페이로드를 생성하거나 혹은 페이로드에 대한 정보를 조회하거나, "payload_badchars" 접근자를 가지고 다른 메소드를 실행할 때 넘겨준다거나 등등이 있다
-> 익스플로잇 코드 같은 경우에 옵션 부분에 기본 모듈의 기본 옵션이 있다. Name, Discript 등등의 부분이 있는데 익스플로잇 모듈의 경우에는 페이로드 옵션을 꼭 적어줘야 한다. 타켓도 필요하다. 타켓이라고 하는 것은 주로 "RET", 주로 윈도우7 버전에는 "RET" 주소가 무엇이고, XP 버전에서는 "RET" 주소가 무엇인지를 지정해줘야 한다. 페이로드 옵션은 위의 항목들을 적어주고 페이로드 생성을 하게 되면 그러한 옵션 값을 가지고 페이로드를 생성하는 원리이다
-> 다음으로는 "check()" 메소드가 있다. 익스플로잇 코드를 보내지 않고 대상 시스템이 취약한지 아닌지를 확인해 주는 메소드이다. 개발자 사이트에서 구현할 것을 권장하지만, 구현이 불가능한 경우에는 구현하지 않아도 된다
-> 중요한 것은 이 부분이다. 체크라는 메소드를 선언한 다음에 작성할 때, 예를 들어, ftp 취약점을 체크한다고 했을때 이러한 방법을 쓸 수 있다. 연결을 하고, 연결을 했다가, 연결을 끊은 다음에, Hello라는 요청을 보내면 ftp 서버쪽에서 Hi라는 요청이 올 것이다. 그리고 자신의 배너를 클라이언트 쪽으로 보내는 경우가 있다. 그래서 배너 정보를 분석해보고 이것이 취약한지 아닌지를 판단하는 것이다
-> 다음으로 브라우저 요구사항이란 것이 있다. 예를 들어, Flash 취약점에서 domain memory, uaf을 보았을 것이다. 클라이언트가 공격자 서버(= 메타스플로잇 서버)에 클라이언트가 접속을 하면 바로 익스플로잇 코드를 보내는 것이 아니라 클라이언트가 익스플로잇이 가능한 조건인지를 확인한다. 운영체제, 플래시 버전, 언어 팩 등을 확인해서 조건에 맞는 경우에만 익스플로잇을 보내주는 방식으로 구성되어 있다
-> 위에서 검은색 글씨로 되어 있는 항목들은 (os_flavor, clsid, method 세가지를 제외한) 지정해 줄 수가 있다. 예를 들어서 자바스크립트 활성화 여부, 브라우저 종류 등을 지정해주면 그에 따라 모듈이 실행을 할 때, 공격할 수 있는 모듈이 윈도우7, 플래쉬 버전이 1이고, 인터넷 익스플로러를 써야된다는 전제로 요구 조건을 적는다면 "os_name"은 7, "flash"는 1.0, "ua_name"은 IE라고 작성하면 조건에 맞추어 검사해준다. 만약 조건에 부합하지 않는다면 모듈 창에 에러를 출력해준다
->> 현재 이러한 실습은 "Browser Exploit Server"에서 해볼 것이다
-> 다음으로 Auxliary 모듈 개발도 마찬가지이다. 익스플로잇 모듈 개발하는 것과 똑같다. 모듈 개발 방법론에 따라 개발하면 된다. 크게 "DoS"와 "스캐너" 코드만 보아도 된다. "DoS"는 페이로드 없는 익스플로잇으로 익스플로잇 모듈 개발을 한다면 도스 모듈 개발은 일도 아니게 된다
-> Auxiliary 모듈의 경우 기존에 만들어진 코드만 잘 분석해도 충분히 원하는 모듈을 개발할 수 있다. 이것들 중 "LoginScanner"을 이용한 login 스캔의 경우에는 조금 복잡한 구조로 되어 있는데 따로 조금 설명할 예정이다
-> 초중급 과정에서 DB-Nmap 혹은 Port-Scan을 했던 결과 값이 자동으로 데이터베이스에 들어갔던것을 기억할 것이다. hosts, servers... 이런식으로 명령을 입력하면 현재 스캔한 결과가 메타스플로잇 DB에 자동으로 등록된 것을 볼 수 있다. 이게 모듈 사용 입장에서는 자동으로 등록된 것이지만, 모듈을 개발하는 입장에서는 이것을 직접 등록한다고 생각하면 된다. 예를 들어, 스캐너 모듈을 개발했을때 스캐너 모듈이 수행한 결과, 어떠한 대상 서비스를 식별했다거나, 서비스의 버전까지 식별했다 등을 코드 상에서 직접 등록을 해줘야 한다. ftp 버전을 확인했는데 1.0 이라고 한다면 정보를 "report_service"라는 메소드를 이용해서 IP, Port, 대상 서비스(ftp), 자세한 정보는 freeftpd 1.0이라는 것을 메소드로 직접 등록을 해줘야한다
-> 모듈을 개발하는 입장에서는 직접 이러한 필요한 정보들을 DB에 등록할 수 있다. dB에다가 정보를 보내면 자동으로 등록하는 과정으로 이루어진다
-> 마지막으로 "LoginScanner"라는것이 있다. 예를 들어서, 로그인 테스트를 하는 것이다. 원격 ftp 서버가 있는데 공격자가 계정을 모른다고 가정하고 있다. 하지만 ftp에서 많이 사용하는 사용자 정보와 패스워드 파일을 가지고 있다. 사전 파일을 가지고 ftp 서버에 하나씩 대입해보고 싶다. 그럴때 지원해주는 것이 "LoginScanner"이다. 효과적인 브루트포스 로그인 스캐너 모델을 생성할 수 있도록 지원하는 모듈이다
-> 사실상 코드가 조금 길어서 복잡하다고 생각할 수 있지만 아주 자세하게 코드가 작성되어 있다. 탬플릿 코드라고 믿기 어려울만큼 길게 되어 있지만, 70~80%는 그대로 사용하면 되고, 나머지 30~40%는 스캔 결과를 해석하는 부분이다. 이 부분만을 커스터마이징해서 작성해도 될 만큼 정교하게 구체적으로 잘 되어 있다
-> 간단하게 "동적 방식"만 이해하면 된다. 가장 처음으로 "Credential" 객체가 있다. 옵션 값을 채워줘야 한다. 예를 들어서, 사용자 계정 정보 파일이 어디있고, 패스워드 정보는 뭐고, IP는 뭐고 등등 이러한 자격 정보라는 객체를 먼저 만들어놓고 그러한 객체 정보를 가지고 로그인 스캐너를 활성화 시켜준다(= 초기화 해준다). "XXX.new()"에서 XXX 부분에는 예를 들어서 ftp, smb, http 등등의 프로토콜 유형을 적어준다. 그 유형에 맞는 스캐너를 초기화 한 다음에 스캔하면 끝이다. 스캔하게 되면 result라는 객체에 스캔 결과가 들어간다. 그리고 결과를 해석하는 구문을 잘 작성해주면 로그인 스캐너를 만드는데는 큰 무리가 없다
->> 현재는 이러한 과정으로 "작성을 하는구나" 정도만 이해하고 실습할 때 구체적으로 확인해 보면 된다
-> Post 모듈의 경우는 이 정도만 살펴보고 간다. 따로 개발하는 방법은 소개하지 않는다. 다른 모듈들과 마찬가지로 똑같기 때문이다. 포스트 모듈 유형에 이러한 것들이 있고 만들고자 하는 유형에 맞춰서 개발하면 된다
-> 포스트 모듈 작성할 때 가장 많이 쓰이는 믹스인은 위에 보이는 것 들이다
-> 여기까지가 모듈 유형별로 개발하는 방법을 설명했다. 사실 별게 없다. 직접 만들어보면 충분히 이해할 수 있는 부분이다
-> 다음으로는 취약점을 트리거 할 수 있는 파일을 만드는 모듈, TCP 통신을 하는 모듈, HTTP 통신을 하는 모듈을 만들어 볼 예정이다
-> 그 다음으로는 익스플로잇 페이로드를 생성하고, 메모리 보호 기법을 작성하는 방법을 해 볼 예정이다
-> 마지막으로 Auxiliary 모듈을 개발해본다. FTP 버전을 확인하고, FTP LoginScanner를 만들어보는 연습을 진행할 것이다
-> 1~10강 까지는 모듈 개발을 위한 준비 단계였다고 보면 될 것이고(= 정말 최소한의 부분만을 설명했다), 11~20강 까지 개발하다가 조금 부족한 내용이 있다고 생각하면 1~10강 까지의 내용을 다시 한 번 반복하는 것도 좋은 방법이다. 되도록 11~20강 까지 쭉 한번 쭉 만들어보고 질문하고, 부족한 부분을 찾아보는게 좋다
'모의해킹 > metasploit(고급)' 카테고리의 다른 글
실습 - 모듈 기능 구현 (0) | 2021.11.17 |
---|---|
MSF의 이해 (0) | 2021.11.03 |