
Ronin은 보안 연구 및 개발을 위한 무료 오픈 소스 Ruby 툴킷입니다. Ronin은 또한 타사 git 저장소를 통해 코드, 익스플로잇, 페이로드 등을 신속하게 개발하고 배포할 수 있습니다.
Ronin은 보안 연구 및 개발을 위한 무료 오픈 소스 Ruby 툴킷입니다. Ronin은 다양한 보안 작업을 위한 여러 CLI 명령어와 Ruby 라이브러리를 포함합니다. 예를 들어 데이터 인코딩/디코딩, IP/호스트/URL 필터링, ASN 조회, DNS 조회, HTTP, 웹 취약점 스캐닝, 웹사이트 스파이더링, 서드파티 저장소 설치 ( exploits 및/또는 payloads ), exploits 실행, 새로운 exploits 개발, 로컬 데이터베이스 관리, 데이터 퍼징, 정찰 수행 등이 있습니다.
ronin 명령어를 사용하여 다양한 데이터를 빠르게 처리하고 조회할 수 있습니다.ronin irb Ruby REPL에서 코드와 데이터를 효율적으로 작업할 수 있습니다.ronin 라이브러리를 사용하여 Ruby 스크립트를 신속하게 프로토타이핑할 수 있습니다.Usage: ronin [options] [COMMAND [ARGS...]]
Options: -h, --help Print help information
Arguments: [COMMAND] The command name to run [ARGS ...] Additional arguments for the command
Commands: archive asn banner-grab bitflip cert-dump cert-gen cert-grab completion decode, dec decrypt dns dns-proxy email-addr encode, enc encrypt entropy escape extract grep help hexdump highlight hmac homoglyph host http ip iprange irb md5 netcat, nc new pack proxy public-suffix-list quote rot sha1 sha256 sha512 strings tld-list tips typo typosquat unarchive unescape unhexdump unpack unquote url xor
Additional Ronin Commands: $ ronin-repos $ ronin-wordlists $ ronin-db $ ronin-web $ ronin-fuzzer $ ronin-masscan $ ronin-nmap $ ronin-recon $ ronin-payloads $ ronin-exploits $ ronin-vulns $ ronin-app
ronin 명령어 목록:```shell
$ ronin help
명령어의 man 페이지 보기:```shell $ ronin help COMMAND
`ronin` 사용 방법에 대한 무작위 팁을 받으세요:```shell
$ ronin tips
Ronin Ruby REPL을 엽니다:```
$ ronin irb
, Jµ ▓▓█▓
J▌ ▐▓██▌ ████ ██ ▐███D
╓▄▓▓█████▌ ██µ ████ ▄███ÖJ██▌ ███▌
,╓µ▄▄▄▄▄▄▄▄µ;, ,▄▓██████████ ▐███ ▐███▀ ███▌ ████µ ▄███
¬∞MÆ▓███████████████████████▓M ▄██████▀▀╙████▌ ████▌ ████ ▄███ J█████ ███▌
█████▀▀▀▀▀███████ -████▀└ ████ ▐█████n ▄███O ███▌ ██████████ ▓████L ████▀ ▓████ ▓███Ö ███████ ███▌ ▓███ ▐█████████▀ ▄████▀ ,╓▄▄▄█████ J████Ü ,███▌ ▄███████████ J███▀ ████ █████ J█████████████████─ ████▌ ████ ██████████▌ ████ ▐███Ü ▐███Ü
███████████▀▀▀╙└ ▐████ J███▌ ▓███▌ ²█████ J███Ü ███▌ ▀█▌
▓██████████▌ ████▌ ████ ;████ ▀███▀ ███▌ J▀▀▀- █
▄█████▀ ▀█████µ ▐████ ,▄▓████▀ ████▀ ███ J███ `
J█████- ╙▀███▄ ████████████▀╙ J█▀▀▀ █U ▀█▌
████▀ ▀███ ▄████████▀▀ ╨ █
▓██▀ ²▀█▄ █▀▀▀╙└
▄██╜ ╙W
J█▀
▌└
┘
irb(ronin)>
Ronin의 대화형 Web UI를 시작하고 엽니다:```
$ ronin-app
다양한 형식으로 데이터를 16진수 덤프합니다:```shell $ ronin hexdump /bin/ls
Un-hexdumps: hexdump 파일을 다시 원래의 원시 바이너리 데이터로 되돌립니다.```shell
$ ronin unhexdump -o data.bin hexdump.txt
파일에서 모든 인쇄 가능한 문자열을 출력:```shell $ ronin strings /bin/ls
파일에서 모든 알파벳 문자열을 출력합니다:```shell
$ ronin strings --alpha /bin/ls
파일에서 모든 영숫자 문자열을 출력합니다:```shell $ ronin strings --alpha-num /bin/ls
파일에서 모든 숫자 문자열을 출력합니다:```shell
$ ronin strings --numeric /bin/ls
파일에서 모든 16진수 문자열을 출력합니다:```shell $ ronin strings --hex /bin/ls
도메인 이름의 모든 비트 플립을 열거하세요:```shell
$ ronin bitflip microsoft --alpha-num --append .com
licrosoft.com
oicrosoft.com
iicrosoft.com
eicrosoft.com
Microsoft.com
mhcrosoft.com
mkcrosoft.com
mmcrosoft.com
macrosoft.com
mycrosoft.com
...
문자열을 Base64로 인코딩:```shell $ ronin encode --base64 --string "foo bar baz" Zm9vIGJhciBiYXo=
Zlib으로 압축하고, Base64로 인코딩한 후, URI 인코딩을 수행하는 문자열:```shell
$ ronin encode --zlib --base64 --uri --string "foo bar"
%65%4A%78%4C%79%38%39%58%53%45%6F%73%41%67%41%4B%63%41%4B%61%0A
Base64 문자열 디코드:```shell $ ronin decode --base64 --string "Zm9vIGJhciBiYXo=" foo bar baz
URI 디코드, Base64 디코드, 그리고 zlib 인플레이트를 통해 문자열을 압축 해제합니다:```shell
$ ronin decode --uri --base64 --zlib --string "%65%4A%78%4C%79%38%39%58%53%45%6F%73%41%67%41%4B%63%41%4B%61%0A"
foo bar
문자열을 URI 이스케이프합니다:```shell $ ronin escape --uri --string "foo bar" foo%20bar
URI 문자열 언이스케이프:```shell
$ ronin unescape --uri --string "foo%20bar"
foo bar
파일을 따옴표로 묶인 C 문자열로 변환합니다:```shell $ ronin quote --c file.bin "..."
파일을 따옴표로 묶인 JavaScript 문자열로 변환:```shell
$ ronin quote --js file.bin
C 문자열 따옴표 해제:```shell $ ronin unquote --c --string '"\x66\x6f\x6f\x20\x62\x61\x72"' foo bar
### 텍스트
파일에서 높은 엔트로피 데이터를 추출합니다:```shell
$ ronin entropy -e 5.0 index.html
데이터의 일반적인 패턴을 Grep으로 검색하십시오:```shell $ ronin grep --hash index.html
데이터에서 공통 패턴 추출:```shell
$ ronin extract --hash index.html
단어의 무작위 오타 생성:```shell $ ronin typo microsoft microssoft
단어의 모든 오타 변형을 열거합니다:```shell
$ ronin typo --enum microsoft
microosoft
microsooft
microssoft
단어의 무작위 동형 문자 버전 생성:```shell $ ronin homoglyph CEO CEO
단어의 모든 동형자 변형을 열거합니다:```shell
$ ronin homoglyph --enum CEO
ϹEO
СEO
ⅭEO
CEO
CΕO
CЕO
CEO
CEΟ
CEО
CEO
파일의 구문을 강조 표시합니다:```shell $ ronin highlight index.html
### 암호학
AES-256으로 파일 암호화:```shell
$ ronin encrypt --cipher aes-256-cbc --password "..." file.txt > encrypted.bin
데이터 복호화:```shell $ ronin decrypt --cipher aes-256-cbc --password "..." encrypted.bin
파일에 대한 HMAC을 생성합니다:```shell
$ ronin hmac --hash sha1 --password "too many secrets" data.txt
문자열에 대한 HMAC을 생성합니다:```shell $ ronin hmac --hash sha1 --password "too many secrets" --string "..."
문자열의 MD5 체크섬 계산:```shell
$ ronin md5 --string "hello world"
5eb63bbbe01eeed093cb22bb8f5acdc3
파일의 MD5 체크섬 계산:```shell $ ronin md5 file.txt
파일 내 각 줄의 MD5 체크섬을 계산합니다:```shell
$ ronin md5 --multiline file.txt
문자열의 SHA1 체크섬을 계산하십시오:```shell $ ronin sha1 --string "hello world" 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
파일의 SHA1 체크섬 계산:```shell
$ ronin sha1 file.txt
파일의 각 줄의 SHA1 체크섬을 계산합니다:```shell $ ronin sha1 --multiline file.txt
문자열의 SHA256 체크섬 계산:```shell
$ ronin sha256 --string "hello world"
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
파일의 SHA256 체크섬을 계산합니다:```shell $ ronin sha256 file.txt
파일의 각 줄에 대해 SHA256 체크섬을 계산합니다:```shell
$ ronin sha256 --multiline file.txt
문자열의 SHA512 체크섬 계산:```shell $ ronin sha512 --string "hello world" 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
파일의 SHA512 체크섬을 계산합니다:```shell
$ ronin sha512 file.txt
파일의 각 줄에 대한 SHA512 체크섬을 계산합니다:```shell $ ronin sha512 --multiline file.txt
ROT-13은 문자열을 인코딩합니다:```shell
$ ronin rot --string "The quick brown fox jumps over the lazy dog"
Gur dhvpx oebja sbk whzcf bire gur ynml qbt
XOR는 문자열을 인코딩합니다:```shell $ ronin xor --key ABC --string "The quick brown fox jumps over the lazy dog" "\x15*&a36(!(a 1.5-a$,9b)4/32b,7'1a6+$b/ 8:a&,&"
### 네트워킹
IP 주소의 ASN 조회:```shell
$ ronin asn -I 4.2.2.1
4.0.0.0/9 AS3356 (US) LEVEL3
시스템의 외부/공인 IP 주소 가져오기:```shell $ ronin ip --public
IP 주소를 십진수 형식으로 변환:```shell
$ ronin ip --decimal 127.0.0.1
2130706433
IP 주소 파일을 URL로 변환합니다:```shell $ ronin ip --file targets.txt --http
IP CIDR 범위의 모든 IP 주소를 열거합니다:```shell
$ ronin iprange 10.1.0.0/15
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
10.0.0.9
...
IP glob 범위 내의 모든 IP 주소를 열거합니다:```shell $ ronin iprange 10.1-3.0.* 10.1.0.1 10.1.0.2 10.1.0.3 10.1.0.4 10.1.0.5 10.1.0.6 10.1.0.7 10.1.0.8 10.1.0.9 10.1.0.10 ...
두 IP 주소 사이의 모든 IP 주소를 열거합니다:```shell
$ ronin iprange --start 10.0.0.1 --stop 10.0.3.33
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
10.0.0.9
10.0.0.10
원격 TCP 서비스에 연결:```shell $ ronin netcat -v example.com 80
로컬 TCP 포트에서 수신 대기:```shell
$ ronin netcat -v -l 1337
원격 SSL/TLS 서비스에 연결하세요:```shell $ ronin netcat -v --ssl example.com 443
원격 UDP 서비스에 연결:```shell
$ ronin netcat -v -u example.com 1337
로컬 UDP 포트에서 수신 대기:```shell $ ronin netcat -v -u -l 1337
UNIX 소켓을 엽니다:```shell
$ ronin netcat -v --unix /path/to/unix.socket
소켓에서 수신된 모든 데이터를 Hexdump:```shell $ ronin netcat --hexdump example.com 80 GET / HTTP/1.1 Host: example.com User-Agent: Ruby
00000000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d |HTTP/1.1 200 OK.| 00000010 0a 41 67 65 3a 20 32 35 30 38 30 36 0d 0a 43 61 |.Age: 250806..Ca| 00000020 63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 6d 61 78 |che-Control: max| 00000030 2d 61 67 65 3d 36 30 34 38 30 30 0d 0a 43 6f 6e |-age=604800..Con| 00000040 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f |tent-Type: text/| 00000050 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54 |html; charset=UT| ...
#### DNS
DNS 레코드 조회:```shell
$ ronin dns -t TXT github.com
호스트 이름에 대한 모든 등록된 TLD 찾기:```shell $ ronin host --enum-tlds --registered github.com github.ac github.actor github.ae github.africa github.agency github.ai ...
호스트 이름에 대해 등록된 모든 공개 접미사를 찾습니다:```shell
$ ronin host --enum-suffix --registered github.com
example.com.ag
example.ai
example.al
example.am
example.com.ar
example.at
example.co.at
example.or.at
example.com.au
example.be
example.com.bh
...
주소가 있는 모든 하위 도메인을 찾으십시오:```shell $ ronin host --enum-subdomains subdomains.txt --has-addresses google.com www.google.com mail.google.com smtp.google.com ns1.google.com ns2.google.com m.google.com ns.google.com blog.google.com admin.google.com news.google.com vpn.google.com ns3.google.com ...
도메인의 가능한 모든 타이포스쿼팅 변형을 열거합니다:```shell
$ ronin typosquat microsoft.com
microosoft.com
microsooft.com
microssoft.com
유효한 도메인에 대해 등록된 타이포스쿼팅 도메인을 모두 찾습니다:```shell $ ronin typosquat --registered microsoft.com
유효한 도메인에 대한 주소를 가진 모든 타이포스쿼트 도메인 찾기:```shell
$ ronin typosquat --has-addresses microsoft.com
유효한 도메인에 대해 등록되지 않은 타이포스쿼팅 도메인을 모두 찾습니다.```shell $ ronin typosquat --unregistered microsoft.com
이메일 주소 난독화 해제:```shell
$ ronin email-addr --deobfuscate "john [dot] smith [at] example [dot] com"
[email protected]
이메일 주소의 모든 난독화를 열거합니다:```shell $ ronin email-addr --enum-obfuscations [email protected] john.smith @ example.com john.smith AT example.com john.smith at example.com john.smith[AT]example.com john.smith[at]example.com ...
#### SSL/TLS Certs
SSL/TLS 인증서에 대한 정보를 덤프합니다:```shell
$ ronin cert-dump https://example.com/
호스트와 포트에서 SSL/TLS 인증서를 다운로드하세요:```shell $ ronin cert-grab github.com:443
새로운 SSL/TLS 인증서 생성:```shell
$ ronin cert-gen -c test.com -O "Test Co" -U "Test Dept" \
-L "Test City" -S NY -C US
HTTP GET 요청을 수행합니다 (구문 강조 포함):```shell
$ ronin http https://example.com/
추가 헤더와 함께 HTTP 요청을 보냅니다:```shell
$ ronin http --post --header "Authorization: ..." https://foo.bar/
알려진 User-Agent 문자열로 HTTP 요청을 보냅니다:```shell
$ ronin http --post --user-agent chrome-android https://foo.bar/
사용자 정의 `User-Agent` 문자열로 HTTP 요청을 보냅니다:```shell
$ ronin http --post --user-agent-string "..." https://foo.bar/
대화형 HTTP 셸 열기:```shell $ ronin http --shell https://example.com/ https://example.com/> help help [COMMAND] Prints the list of commands or additional help get PATH[?QUERY] [BODY] Performs a GET request head PATH[?QUERY] Performs a HEAD request patch PATH[?QUERY] [BODY] Performs a PATCH request post PATH[?QUERY] [BODY] Performs a POST request put PATH [BODY] Performs a PUT request copy PATH DEST Performs a COPY request delete PATH[?QUERY] Performs a DELETE request lock PATH[?QUERY] Performs a LOCK request options PATH[?QUERY] Performs a OPTIONS request mkcol PATH[?QUERY] Performs a MKCOL request move PATH[?QUERY] DEST Performs a MOVE request propfind PATH[?QUERY] Performs a PROPFIND request proppatch PATH[?QUERY] Performs a PROPPATCH request trace PATH[?QUERY] Performs a TRACE request unlock PATH[?QUERY] Performs a UNLOCK request cd PATH Changes the base URL path headers [{set | unset} NAME [VALUE]] Manages the request headers
파일 내 모든 URL의 HTTP 상태를 출력합니다:```shell
$ ronin url --file urls.txt --status
새로운 Ruby 스크립트를 ronin-support가 사전 로드된 상태로 생성합니다:```shell $ ronin new script foo.rb
새 Ruby 프로젝트를 `Gemfile`과 함께 생성하세요:```shell
$ ronin new project foo
HTML/XML 파싱을 위한 새로운 nokogiri Ruby 스크립트 생성:
$ ronin new nokogiri foo.rb
새로운 [ronin-web-server] Ruby 스크립트 생성:```shell
$ ronin new web-server my_server.rb
새로운 ronin-web-server 기반 웹 앱 생성:```shell $ ronin new web-app my_app
새로운 [ronin-web-spider] Ruby 스크립트 생성:```shell
$ ronin new web-spider --host=example.com my_spider.rb
ronin-listener-dns 스크립트를 생성하세요:```shell $ ronin new dns-listener my_dns_listener.rb
다음 [ronin-dns-proxy] 스크립트를 생성하십시오:```shell
$ ronin new dns-proxy my_dns_proxy.rb
ronin-listener-http 스크립트 생성:```shell $ ronin new http-listener my_http_listener.rb
[ronin-exploits] 스크립트를 생성하세요:```shell
$ ronin new exploit my_exploit.rb
ronin-payloads 스크립트 생성:```shell $ ronin new payload my_payload.rb
### 아카이브
아카이브 파일:```shell
$ ronin archive -o archive.zip file1.txt file2.txt
tar 형식을 사용하여 파일을 아카이브합니다:```shell $ ronin archive -o archive.tar file1.txt file2.txt
압축 해제 파일:```shell
$ ronin unarchive arch1.tar arch2.zip
명시적 형식으로 파일 압축 해제:```shell $ ronin unarchive -f zip arch2.jar
### 참고 항목
* [ronin-repos](https://github.com/ronin-rb/ronin-repos#synopsis)
* [ronin-wordlists](https://github.com/ronin-rb/ronin-wordlists#synopsis)
* [ronin-db](https://github.com/ronin-rb/ronin-db#synopsis)
* [ronin-web](https://github.com/ronin-rb/ronin-web#synopsis)
* [ronin-fuzzer](https://github.com/ronin-rb/ronin-fuzzer#synopsis)
* [ronin-payloads](https://github.com/ronin-rb/ronin-payloads#synopsis)
* [ronin-exploits](https://github.com/ronin-rb/ronin-exploits#synopsis)
* [ronin-vulns](https://github.com/ronin-rb/ronin-vulns#synopsis)
## 요구 사항
* [gcc] / [clang]
* [make]
* [git]
* [libsqlite3]
* [Ruby] >= 3.2.0
* [open_namespace] ~> 0.4
* [rouge] ~> 3.0
* [io-endpoint] ~> 0.15
* [io-stream] ~> 0.8
* [wordlist] ~> 1.1
* [ronin-support] ~> 1.1
* [ronin-dns-proxy] ~> 0.1
* [ronin-core] ~> 0.2
* [ronin-repos] ~> 0.1
* [ronin-wordlists] ~> 0.1
* [ronin-db] ~> 0.1
* [ronin-listener] ~> 0.1
* [ronin-nmap] ~> 0.1
* [ronin-masscan] ~> 0.1
* [ronin-recon] ~> 0.1
* [ronin-fuzzer] ~> 0.1
* [ronin-web] ~> 2.0
* [ronin-code-asm] ~> 1.0
* [ronin-code-sql] ~> 2.0
* [ronin-payloads] ~> 0.1
* [ronin-exploits] ~> 1.0
* [ronin-vulns] ~> 0.2
* [ronin-app] ~> 0.1
## 설치
### Bash 스크립트```shell
curl -o ronin-install.sh https://raw.githubusercontent.com/ronin-rb/scripts/main/ronin-install.sh && bash ronin-install.sh
Ronin과 추가 종속 항목을 플랫폼에 설치하는 방법은 수동 설치 안내서를 참조하세요.
Docker를 사용하고 싶다면, [Docker 이미지]도 사용 가능합니다:```shell docker pull roninrb/ronin docker run -it roninrb/ronin
추가로, 도커 이미지에 홈 디렉토리를 마운트하려면:```shell
docker run --mount type=bind,source="$HOME",target=/home/ronin -it ronin
cd ronin./scripts/setupgit checkout -b my_featurebundle exec rake specgit push origin my_featureCopyright (c) 2006-2026 Hal Brodigan (postmodern.mod3 at gmail.com)
Ronin은 자유 소프트웨어입니다: 자유롭게 재배포 및 수정할 수 있습니다 단, Free Software Foundation에서 발행한 GNU General Public License의 조건에 따라야 합니다 해당 라이선스의 버전 3, 또는 (선택에 따라) 이후 버전을 사용할 수 있습니다.
Ronin은 유용하게 사용될 것이라는 희망 하에 배포되지만, 어떠한 보증도 없이 제공됩니다. 상업성 또는 특정 목적에의 적합성에 대한 묵시적 보증조차 없습니다. 자세한 내용은 GNU General Public License를 참조하십시오.
Ronin과 함께 GNU General Public License의 사본을 받았을 것입니다. 만약 받지 못했다면, https://www.gnu.org/licenses/를 방문하십시오.