1
0
hugo/content/blog/2018-07-30-nmap.md
2024-04-23 22:21:26 +09:00

226 lines
9.2 KiB
Markdown

+++
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"
}
]
}
]
}
```
こんな感じで色々書いてく。