[METASPLOIT] MSF에서 Postgres DB 연결 및 사용하기

Setup DB(Postgres)

DB 연결 전 postgres DB에서 사용할 계정 및 DB를 생성합니다. 먼저 postgres 계정으로 전환합니다.

su - postgres

전환 후 createuser 명령으로 msf에서 db로 사용할 계정을 생성합니다.

createuser htest_db -P
Enter password for new role: yourpassword
Enter it again: yourpassword
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

createdb 명령을 통해 msf에서 사용할 db를 생성합니다. owner는 아까 생성한 계정명으로 해줍시다.

createdb --owner=htest_db htest_database

=> DB 생성 완료

DB Connect in MSF

MSF 로드 후 db를 확인하면 아래와 같이 no connection 으로 나타나게 됩니다.

hahwul #> db_status
[*] postgresql selected, no connection

아까 생성한 정보를 기반으로 db_connect 명령을 통해 DB 연결을 시도합니다.

hahwul #> db_connect htest_db:yourpassword@127.0.0.1:5432/htest_database
[*] Rebuilding the module cache in the background...

DB 연결 후 db_status 명령을 통해 확인하면 연결되어 있다고 나옵니다.

hahwul #> db_status
[*] postgresql connected to htest_database

help 명령을 통해 DB 명령을 확인하면 아래와 같습니다. 하나하나 써보시면 금방 이해갑니다.

hahwul #> help database
Database Backend Commands
=========================

    Command           Description
    -------           -----------
    creds             List all credentials in the database
    db_connect        Connect to an existing database
    db_disconnect     Disconnect from the current database instance
    db_export         Export a file containing the contents of the database
    db_import         Import a scan result file (filetype will be auto-detected)
    db_nmap           Executes nmap and records the output automatically
    db_rebuild_cache  Rebuilds the database-stored module cache
    db_status         Show the current database status
    hosts             List all hosts in the database
    loot              List all loot in the database
    notes             List all notes in the database
    services          List all services in the database
    vulns             List all vulnerabilities in the database
    workspace         Switch between database workspaces

hahwul #> db_hosts
hahwul #> db_nmap localhost  (결과를 DB에 저장합니다.)

Automated connect

매번 MSF 실행 시 DB를 연결하기에는 굉장히 번거롭습니다. database.yml 파일을 설정하여 쉽게 바로바로 로드될 수 있도록 수정이 가능합니다. MSF 디렉토리 > config > database.yml

config 하단에 파일을 로드하면 DB 연결정보가 나오고 아래와 같이 작성해주시면 됩니다.
 development: &pgsql
  adapter: postgresql   
  database: DB 이름
   username: DB 유저 이름(postgres 에서 만든 계정)
   password: 위 계정의 패스워드
   host: localhost
   port: 5432      # 변경하셨다면 변경하신 포트로 작성해주세요.
   pool: 5
   timeout: 5

쉽게 설정이 가능하며, DB 연결을 통해 다른 어플리케이션과의 통신도 쉽게 가능합니다 😎