w12scan
w12scan์ ๋คํธ์ํฌ ์์ฐ ๋ฐ๊ฒฌ ์์ง์
๋๋ค. WEB ์ธํฐํ์ด์ค๋ฅผ ํตํด ์์
์ ์ ๋ฌํ๋ฉด w12scan์ด ๊ด๋ จ ์์ฐ์ ์๋์ผ๋ก ์ง๊ณํ์ฌ ๋ถ์์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. w12scan์ ์ ์กธ์
ํ๋ก์ ํธ์ด๊ธฐ๋ ํฉ๋๋ค.
w12scan์ WEB ํด๋ผ์ด์ธํธ(๋ฐ์ดํฐ ํ์์ฉ)์ Client ํด๋ผ์ด์ธํธ(๊ด๋ จ ์์ฐ ๋ฐ์ดํฐ ๊ฒ์์ฉ)๋ก ๋๋ฉ๋๋ค.
์ฌ๊ธฐ๋ WEB ์ธก์ ์คํ์์ค ํ๋ก๊ทธ๋จ์ด๋ฉฐ, client ์ธก์ https://github.com/boy-hack/w12scan-client ์ ์์ต๋๋ค.
W12SCAN์ ์์๋ณด๋ ๋์์

๋์์ธ ์ฒ ํ
Python3 + Django + Elasticsearch + Redis(์ค๋ณต ์ ๊ฑฐ + WEB๊ณผ Client ๊ฐ ํต์ ๋ฏธ๋ค์จ์ด) ๊ธฐ๋ฐ์ผ๋ก, WEB API๋ฅผ ์ฌ์ฉํ์ฌ ์ค์บ ๋์ ์ถ๊ฐ, ์ค์บ ์๋ฃ ํ WEB ์ธก์ ํ์๋ฉ๋๋ค.

ํน์ง
WEB ์ธก
- ๊ฐ๋ ฅํ ๊ฒ์ ๊ตฌ๋ฌธ
- ๊ฒ์ ๊ตฌ๋ฌธ์ ํตํด CMS, ์๋น์ค ์ด๋ฆ, ์ ๋ชฉ, ๊ตญ๊ฐ/์ง์ญ ๋ฑ์ ๊ฒ์ํ์ฌ ๊ด๋ จ ๋์์ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
- title=โabcโ # ์ ๋ชฉ์์ ๊ฒ์
- header=โabcโ # HTTP ํค๋์์ ๊ฒ์
- body=โ123โ # ๋ณธ๋ฌธ์์ ๊ฒ์
- url = โ*.baidu.comโ # baidu.com์ ์๋ธ๋๋ฉ์ธ ๊ฒ์,
*๋ ์์ผ๋์นด๋
- ip = โ1.1.1.1โ # IP ๊ฒ์, CIDR
'192.168.1.0/24' ๋ฐ ์์ผ๋์นด๋ '192.168.1.*' ์ง์
- port = โ80โ # ํฌํธ ๊ฒ์
- app = โnginxโ # ๊ตฌ์ฑ ์์ ๊ฒ์
- country = โcnโ # ๊ตญ๊ฐ ๊ฒ์
- service = โmysqlโ # ์๋น์ค ๊ฒ์
- bug = 'xx' # ์กด์ฌํ๋ ์ทจ์ฝ์ ๊ฒ์
- ์ฌ์ฉ์ ์ ์ ์์ฐ ๊ตฌ์ฑ
- ํน์ ํ์ฌ ๊ด๋ จ ๋๋ฉ์ธ ๋๋ IP ์์ฐ์ ์ฌ์ฉ์ ์ ์ํ๋ฉด w12scan์ด ์๋์ผ๋ก ํด๋น ์์ฐ ๋์์ ์ฐพ์์ค๋๋ค. ํด๋น ๋์์ ํ์ํ ๋ ๋์ ๋๋ ํ์๋ก ํด๋น ๋์์ ์์์ ์๋ ค์ค๋๋ค.
- ์๋ ์ฐ๊ฒฐ
- ๋์ ์์ธ ์ ๋ณด์ ๋ค์ด๊ฐ๋ฉด, ๋์์ด IP์ธ ๊ฒฝ์ฐ ํด๋น IP์ ๋ชจ๋ ๋๋ฉ์ธ๊ณผ ํด๋น C ์ธ๊ทธ๋จผํธ์ ๋ชจ๋ ๋๋ฉ์ธ์ด ์๋์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋์์ด ๋๋ฉ์ธ์ธ ๊ฒฝ์ฐ ์ธ์ ์ฌ์ดํธ, C ์ธ๊ทธ๋จผํธ ๋ฐ ํ์ ๋๋ฉ์ธ์ด ์๋์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
- ๋ค์ค ๋
ธ๋ ๊ด๋ฆฌ
- WEB ์ธก์ ๋ช ๋ถ๋ง๋ค ๋
ธ๋์ ์คํ ์ํ๋ฅผ ํ์ธํฉ๋๋ค. ๋
ธ๋ ์ค์บ ์์ ๋
ธ๋ ์ค์บ ๋ก๊ทธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
- ์์
RESTful
- ์์
์ถ๊ฐ๋ฅผ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. WEB ์ธก์์ ์ถ๊ฐํ๊ฑฐ๋ ๋ชจ๋ ์ํํธ์จ์ด์ ํด๋น ์ธํฐํ์ด์ค๋ฅผ ํตํฉํ ์ ์์ต๋๋ค.
์ค์บ ์ธก(Client)
- ์ ์ํ PoC ๊ฒ์ฆ
- airbug API์ ์ฐ๋ํ์ฌ ์ต์ PoC ๊ฒ์ฆ ์คํฌ๋ฆฝํธ๋ฅผ ์จ๋ผ์ธ์ผ๋ก ํธ์ถํฉ๋๋ค. airbug๋ ์ทจ์ฝ์ ์
๋ฐ์ดํธ์ ์ ์์ฑ์ ๋ณด์ฅํฉ๋๋ค. airbug ํ๋ก์ ํธ๋ฅผ ํฌํฌํ ํ ์ง์ PoC ๊ท์น์ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
- ๊ฒ์ฆ์ ๊ณต๊ฒฉ
- ์ค์บ ์ธก์๋ ์ผ๋ฐ์ ์ธ ์ทจ์ฝ์ ๊ฒ์ฆ ์๋น์ค๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค. URL์ ์ค์บํ ๋๋ง๋ค ์ด๋ฌํ ์๋น์ค๊ฐ ์คํ๋๋ฉฐ, ๊ฒฐ๊ณผ๋ ์ต์ข
์ ์ผ๋ก w12scan์ WEB ์ธก์ ํ์๋ฉ๋๋ค.
- ์ค์บ ๋ฐ ์๋ณ
- ํฌํธ ์ค์บ์ masscan์ ์ฌ์ฉํ๊ณ , ํฌํธ ์๋ณ์ nmap์ ์ฌ์ฉํ๋ฉฐ, ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ณ์ wappalyzer์ ๊ฒฝ๋ํ๋ w11scan(์ง๋ฌธ ์ธ์)์ ํธ์ถํฉ๋๋ค.
- ์ฌ์ด ๋ถ์ฐ
- ํ๋ก๊ทธ๋จ ์ํคํ
์ฒ ์ค๊ณ ์ ์ด ์ ์ ๊ณ ๋ คํ์ฌ, ์ค์บ ์ธก์ ์์
๋ง ์์ ํ๊ณ ์ต์ข
๊ฒฐ๊ณผ๋ WEB ์ธก๊ณผ๋ง ์ํธ์์ฉํ๋ฏ๋ก ๋ถ์ฐ์ด ๋งค์ฐ ์ฝ์ต๋๋ค. ๋ค๋ฅธ ๋จธ์ ์์ ์ค์บ ์ธก์ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. Docker ๊ธฐ๋ฐ์ผ๋ก ๋ถ์ฐํ ์ ์์ผ๋ฉฐ, Celery ์๋น์ค๋ฅผ ์ฝ๊ฒ ํตํฉํ ์๋ ์์ต๋๋ค.
์ค์น
Docker ๊ธฐ๋ฐ ์ํด๋ฆญ ๋ฐฐํฌ
mkdir ~/w12scan-data/db # ์ด ๋๋ ํ ๋ฆฌ์ w12scan ์ ์ฅ ๊ฒฐ๊ณผ ์ ์ฅ
mkdir ~/w12scan-data/data # ์ด ๋๋ ํ ๋ฆฌ์ ES ์ ์ฅ ๊ฒฐ๊ณผ ์ ์ฅ
git clone https://github.com/boy-hack/w12scan
cd w12scan
docker-compose up -d
์ ์ ๊ธฐ๋ค๋ฆฐ ํ http://127.0.0.1:8000์ ์ ์ํ์ธ์.
๊ธฐ๋ณธ ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ๋น๋ฐ๋ฒํธ๋ boyhack:boyhack์
๋๋ค.
๋ฐ์ดํฐ ์ ์ฅ
docker-compose.yml์ ์์ ํ์ฌ ~/w12scan-data/db ๋๋ ~/w12scan-data/data๋ฅผ ๊ฒ์ํด ์ ์ฅ ์์น๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๊ด๋ จ ๋ฌธ์
- ๊ณ ๊ฐ์ฉ์ฑ์ ์ ์งํ๋ ค๋ฉด ์ต์ 8G 4H ์๋ฒ๋ฅผ ์ค๋นํ์ธ์(ES๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์๋ชจ). ์๋ฒ๊ฐ ์ด ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ Dockerfile์ ES ๋ฐ์ดํฐ๋ฒ ์ด์ค์
- "ES_JAVA_OPTS=-Xms2048m -Xmx2048m"์ ์ถ๊ฐํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ํด์ผ ํ์ง๋ง, ๊ณ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅ๋์ง ์์ต๋๋ค.
- Windows์์ ์ค์น ์
.sh ํ์ผ ํ์ ๋ฌธ์ ์ ์ฃผ์ํ์ธ์. https://github.com/boy-hack/w12scan/issues/12 (๊ฐ์ฌํฉ๋๋ค @Hotsunrize).
- Q: ๋ถ์ฐ ๋ฐฐํฌ๋ ์ด๋ป๊ฒ ํ๋์? A: ๋ฐฐํฌ ๋ฐฉ์
- Q: ์์ ํ ๊ฒ์ ์๊ฐ 0์ธ๊ฐ์? A: ์ค์บ ๋์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
- ์ค์บํ๋ฉด์ ๊ฒ์ํ์ง ๋ง์ธ์. Elasticsearch๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ ๋ ๋ถ์, ํ ํฐํ ๋ฑ์ ์ํํฉ๋๋ค(์ด๋ ํจ์จ์ด ๋ฎ์ต๋๋ค). ์ด๋ ๊ฒ์ํ๋ฉด 503 ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ค์บ์ด ์๋ฃ๋ ํ ๊ฒ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. (์ถํ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
์ผ๋ก ํด๊ฒฐ ์์ )
๊ด๋ จ ๋งํฌ
๋ฒ๋ฅ
์ด ํ๋ก๊ทธ๋จ์ ์ฃผ๋ก ๋คํธ์ํฌ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ๋ถ์ ์ฐ๊ตฌ์ ์ฌ์ฉํฉ๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๊ธฐ ์ ์ ํ์ง ๊ด๋ จ ๋ฒ๋ฅ ์ ์ค์ํ์๊ธฐ ๋ฐ๋๋๋ค.