+++ date = "2018-07-30" tags = ["nmap","mac"] title = "macでnmapを試してみよう" slug = "nmap" +++ この前、nmapでport scanする機会があったので、その時の話。 portというのは、ネットワークの通信番号のことで、通常はこの番号を指定して通信のやり取りが行われる。firewallは、どの番号を閉じ、どの番号を開けるのか指定できたりする。 で、nmapでscanすると、どのportが開いてるのかを調べられたりするんですけど、不要なportは閉じておいたほうがいいし、backdoorなどが設置されてる場合、管理者に覚えがないportが勝手に開けられてたりすることがある。 この前、macをnmapしてみると、こんな感じだった。 ```sh $ nmap localhost PORT STATE SERVICE 111/tcp open rpcbind 631/tcp open ipp 1021/tcp open exp1 1023/tcp open netvenuechat 2049/tcp open nfs 49163/tcp open unknown $ sudo nmap -sU localhost ``` portを使ってるアプリを調べてみると、macの起動時に動作するプロセスのことが色々把握できた。 具体的には、macは`/System/Library/{LaunchDaemons,LaunchAgents}`で起動プロセスが設定されてるらしい。ちなみに、管理者とユーザーでは異なるprocが起動するので、両方チェックする必要がある。 使わないアプリが勝手に起動し、特定のportを開けている現状は望ましくない。この辺は商用OS?なので、archlinuxなどとは違い、面倒くささがあるなと思った。自分でそういったprocをkillしていかないといけないわけですね。 procについて調べるには以下のようなコマンドでやる。 ```sh $ lsof -i tcp:49163 rapportd 402 syui 3u xxxx TCP *:49158 (LISTEN) # proc 402をkill $ lsof -p 402 $ codesign -dv --verbose=4 /usr/libexec/rapportd $ otool -L /usr/libexec/rapportd $ launchctl list | grep 402 $ launchctl stop com.apple.rapportd ``` macは、こんな感じのコマンドでprocをdisable, stopできる。 ```sh $ launchctl unload -w /System/Library/LaunchAgents/com.apple.rapportd-user.plist $ launchctl stop com.apple.rapportd . . . $ launchctl unload -w /System/Library/LaunchDaemons/com.apple.jetsamproperties.Mac.plist $ launchctl unload -w /System/Library/LaunchAgents/com.apple.sharingd.plist $ launchctl unload -w /System/Library/LaunchDaemons/com.apple.netbiosd.plist # これunloadすると名前解決できなくなるので注意 $ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ``` `$ open -a Network\ Utility.app`を実行して、portscanしてみたけど、こちらのほうが`namp`より正確。 ここで`BetterTou`がportを開けてたので、macのfirewallでブロックした上で、appを削除した。しかし、ショートカットキーが困ったので、`karabiner`に一本化することにした。 > ~/.config/karabiner/karabiner.json ```json "rules": [ { "description": "Command+1でFinderを開く", "manipulators": [ { "from": { "key_code": "1", "modifiers": { "mandatory": [ "command" ], "optional": [ "any" ] } }, "to": [ { "shell_command": "open -a 'finder'" } ], "type": "basic" } ] }, { "description": "Command+Shift+zでiTermを開く", "manipulators": [ { "from": { "key_code": "z", "modifiers": { "mandatory": [ "command", "shift" ], "optional": [ "any" ] } }, "to": [ { "shell_command": "open -a 'iTerm'" } ], "type": "basic" } ] }, { "description": "ESCキーを押したら強制的にIMEをオフにする", "manipulators": [ { "from": { "key_code": "j", "modifiers": { "mandatory": [ "control" ], "optional": [ "any" ] } }, "to": [ { "key_code": "escape" }, { "key_code": "japanese_eisuu" } ], "type": "basic" } ] }, { "description": "Escを押したら強制的にIMEをオフにする", "manipulators": [ { "from": { "key_code": "escape" }, "to": [ { "key_code": "escape" }, { "key_code": "japanese_eisuu" } ], "type": "basic" } ] }, { "description": "Command+Alt+GでChromeを開く", "manipulators": [ { "from": { "key_code": "g", "modifiers": { "mandatory": [ "command", "control" ], "optional": [ "any" ] } }, "to": [ { "shell_command": "open -a 'Google Chrome'" } ], "type": "basic" } ] }, { "description": "Command+Alt+KでKeepassXを開く", "manipulators": [ { "from": { "key_code": "k", "modifiers": { "mandatory": [ "command", "control" ], "optional": [ "any" ] } }, "to": [ { "shell_command": "open -a 'KeePassX'" } ], "type": "basic" } ] } ] } ``` こんな感じで色々書いてく。