Today’s tutorial shows how quickly and easily a Docker port scanner can be created. With the knowledge you can then create additional Docker applications.
Preparation
# prepare knocker project (local) $ mkdir ~/Projects/Knocker && cd ~/Projects/Knocker # create Dockerfile (local) $ vim Dockerfile # create KnockerVM (local) $ docker-machine create -d virtualbox KnockerVM # pointing shell to KnockerVM (local) $ eval $(docker-machine env KnockerVM) # copy Dockerfile into KnockerVM (local) $ docker-machine scp ~/Projects/Knocker/Dockerfile KnockerVM:Dockerfile # SSH into KnockerVM (local) $ docker-machine ssh KnockerVM
Dockerfile
FROM alpine # install needed packages RUN apk --update add wget build-base gcc abuild binutils binutils-doc gcc-doc # download and unzip RUN wget http://prdownloads.sourceforge.net/knocker/knocker-0.7.1.tar.gz RUN tar -zxvf knocker-0.7.1.tar.gz && rm -f knocker-0.7.1.tar.gz # configure, install and clean up WORKDIR /knocker-0.7.1 RUN ./configure \ && make install \ && make clean # create mountable directory RUN mkdir /results VOLUME /results WORKDIR /results # remove packages RUN apk del wget build-base gcc abuild binutils binutils-doc gcc-doc \ && rm -fr /knocker-0.7.1 ENTRYPOINT ["knocker"]
Usage
# build Docker image (KnockerVM) $ docker build -t alpine/knocker . # run Knocker help (KnockerVM) $ docker run -ti --rm alpine/knocker --help # run simple port scan (KnockerVM) $ docker run -ti --rm alpine/knocker -H 192.168.192.1 -SP 1 -EP 10 # run port scan with (KnockerVM) $ docker run -ti --rm -v /home/docker:/results alpine/knocker -H 192.168.192.1 -SP 80 -EP 90 -lf /results/report # read report (KnockerVM) $ cat report
Feel free to edit and/or expand! Knocker self can be found here.