メモリを確認するルートプロセスの機能

メモリを確認するルートプロセスの機能

Linuxシステムでは、プロセスがroot権限を取得できれば、通常はアクセスできないファイルシステムの一部にアクセスできることがわかります。

ルートLinuxプロセスがシステム内の他のプロセスのメモリを確認できるかどうかを尋ねたいと思います。もしそうなら、ヒープまたはスタックに秘密を含むプロセスがある場合、ルートプロセスはそのプロセスにアクセスできますか?では、どうすればいいですか?

(答えた人はrootシェルプロセスも考えることができます。私はrootアクセス権を持つプロセスにのみ興味があります。)

ベストアンサー1

はい、たとえば、この回答を見ることができます https://stackoverflow.com/questions/12977179/reading-living-process-memory-without-interrupting-it

それとも遊んだり、/dev/<pid>/memこの/dev/kmemように

たとえば、このコードを使用すると、ユーザーはホスト上のすべてのプロセスのメモリを読み取ることができます。

#! /usr/bin/env python
import re
import sys

print(sys.argv[1] + ".dump")
maps_file = open("/proc/"+ sys.argv[1] + "/maps", 'r')
mem_file = open("/proc/" + sys.argv[1] + "/mem", 'rb', 0)
output_file = open(sys.argv[1] + ".dump", 'wb')
for line in maps_file.readlines():  # for each mapped region
    m = re.match(r'([0-9A-Fa-f]+)-([0-9A-Fa-f]+) ([-r])', line)
    if m.group(3) == 'r':  # if this is a readable region
        start = int(m.group(1), 16)
        end = int(m.group(2), 16)
        mem_file.seek(start)  # seek to region start
        chunk = mem_file.read(end - start)  # read region contents
        output_file.write(chunk)  # dump contents to standard output
maps_file.close()
mem_file.close()
output_file.close()

ptracegdbリアルタイムでこのタスクを実行するように設計されたツールとその使用も参照してください。

Bash シェルメモリの読み取り

ルートは bash シェルメモリを読み込みます。

おすすめ記事