Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mofos — 가상 머신 조작 프레임워크 | Kitploit
도구/GitHubGitHub/synacktiv/mofos
Scripting & AutomationSecurity VirtualizationNetwork SecurityPenetration TestingUtilities & FrameworksRed Teaming
GitHubsynacktiv/mofos

mofos

가상 머신 조작 프레임워크

저장소 보기
1086746개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
  • mofos
    • 개념
    • 설치
    • 호스트 구성
      • QEMU/KVM 시스템 세션
      • 보안 고려 사항
    • Mofos 구성
    • 템플릿 설치
      • 방화벽 구성
      • 설치
      • 가져오기
    • 상위 레이어 빈 디스크 생성
    • 가상 머신 생성
    • 사용자 지정
      • 템플릿 - hook install
      • 가상 머신 - hook new
      • 가상 머신 - hook start
    • 기능
      • VM 시작 또는 중지 시 알림 설정
      • 클립보드
      • 머신 간 라우팅 설정
      • 펜테스트 박스를 통한 터널링 설정
      • USB 관리
      • PCI 장치 관리
      • 공유 폴더
    • Windows 머신
    • 자동 완성
    • IP 주소 중첩

mofos

Mofos는 가상 머신을 생성, 실행, 관리하도록 설계된 도구입니다. Libvirt/QEMU/KVM 및 Python을 활용하므로 모든 Linux 배포판과 호환됩니다. Qubes OS (https://www.qubes-os.org/)에서 많은 영감을 받았으며, Mofos는 Qubes OS의 많은 기능을 재현하는 것을 목표로 합니다.

이 도구는 Debian과 Debian 기반 가상 머신에서 광범위하게 테스트되었습니다. 다른 Linux 배포판에서도 작동할 것으로 예상되지만, 일부 추가 구성이 필요할 수 있습니다. 더 자세한 내용은 추후 추가될 예정입니다.

Mofos는 가상 머신을 안전하게 관리하는 데 중점을 둔 다양한 기능을 제공합니다:

  • Xpra를 사용한 매끄러운 창 통합.
  • 호스트와 가상 머신 간에 클립보드 콘텐츠를 보내고 받을 수 있는 클립보드 시스템.
  • 가상 머신과의 SSH 통신.
  • 기본 네트워크 제한 및 한 가상 머신의 트래픽을 다른 가상 머신이나 원격 서버를 통해 라우팅하거나 터널링할 수 있는 유연한 옵션.

개념

Mofos 머신은 overlayfs를 사용하여 결합된 두 개의 디스크로 구성됩니다. 첫 번째 디스크는 하위 레이어로 알려진 읽기 전용 템플릿 디스크이고, 두 번째 디스크는 가상 머신이 수행한 모든 변경 사항을 저장합니다. 이 템플릿 디스크는 여러 가상 머신 간에 공유됩니다. 결과적으로 새 가상 머신을 생성하려면 수정된 데이터를 보관하도록 이미 파티셔닝된 빈 디스크를 복제하기만 하면 됩니다. 이 방식을 통해 새 가상 머신을 빠르게 생성할 수 있으며, 템플릿은 독립적으로 업데이트할 수 있습니다. 템플릿에 대한 업데이트는 종속 가상 머신이 다음에 재부팅할 때 적용됩니다.

설치

Linux 배포판에 따라 Makefile을 사용하여 deb 패키지를 생성하거나 파일을 직접 설치할 수 있습니다.``` make deb apt install ./mofos-VERSION.deb

`apt` 설치 중에 다양한 설정이 프롬프트로 표시됩니다. 기본 옵션은 일반적으로 수락할 수 있습니다. 주의가 필요한 유일한 설정은 mofos libvirt 네트워크에서 사용하는 서브넷 주소입니다(기본값: `192.168.90.0/24`).

또는 

다음 종속성을 설치합니다:
- guestfs-tools
- libnotify-bin
- libvirt
- libvirt-clients
- libvirt-daemon
- make
- python3-click
- python3-click-completion
- python3-colorama
- python3-cryptography
- python3-dbus
- python3-jinja2
- python3-lxml
- python3-prettytable
- python3-pyroute2
- python3-tqdm
- qemu-system-common 
- qemu-system-modules-spice
- socat
- spice-client-gtk
- sudo
- virtinst
- virt-install
- virtiofsd
- virt-manager
- virt-viewer```
make install_files

Depending on the distribution, the Python files copied to /usr/lib/python3/dist-packages may not be detected by the Python interpreter and should be placed elsewhere. For example, on Fedora, the Python files must be copied to /usr/lib/python3.11/site-packages.

[!WARNING] 주의, Debian trixie부터 xpra는 더 이상 패키지로 제공되지 않으므로 사용자 지정 저장소에서 수동으로 설치해야 합니다. 자세한 지침은 https://github.com/Xpra-org/xpra/wiki/Download#-for-debian-based-distributions 를 참조하십시오.

호스트 구성

QEMU/KVM 시스템 세션

Mofos는 QEMU/KVM 시스템 세션을 사용하므로 virsh 명령이 가상 머신 및 관련 리소스에 액세스할 수 있도록 환경 변수 LIBVIRT_DEFAULT_URI를 qemu:///system으로 설정하십시오:```console export LIBVIRT_DEFAULT_URI=qemu:///system

### 보안 고려 사항

QEMU/KVM 시스템 세션을 사용하면 qemu 인스턴스를 전용 사용자(`libvirt-qemu`)로 실행하고 각 인스턴스에 특정 보안 프로필을 적용하여 호스트와 게스트 가상 머신 간의 격리를 개선할 수 있습니다.

그러나 기본적으로 일반 사용자는 `libvirtd` 시스템 소켓과 상호 작용하여 머신, 네트워크 및 기타 리소스를 관리할 수 없습니다. 액세스 권한을 얻으려면 사용자는 libvirt Unix 그룹의 구성원이거나 sudo를 사용해야 합니다. 과거에는 libvirt 그룹 구성원 자격을 악용하여 root 권한을 얻는 로컬 권한 상승 취약점이 있었습니다.

이러한 위험을 완화하기 위해 이 저장소는 AppArmor를 사용하는 시스템에서 `libvirtd` 프로세스에 대한 강화된 AppArmor 프로필을 제공합니다. 이 프로필은 `libvirtd`가 파일을 쓸 수 있는 위치와 실행할 수 있는 프로그램을 크게 제한합니다.

또한 `libvirt` 그룹 구성원에게 허용되는 작업을 추가로 제어하기 위해 `polkit` 규칙이 포함되어 있습니다.

AppArmor 프로필은 `deb` 패키지에 포함되어 있지만 Makefile의 `install_files` 대상에 의해 설치되지 않으므로 별도로 설치해야 합니다.

## Mofos 구성

Mofos가 올바르게 작동하려면 `$HOME/.config/mofos/config.toml`에 있는 최소 설정의 구성 파일이 필요합니다. 최소 예제 구성은 `/usr/share/mofos/config.minimal.toml`에서 찾을 수 있으며, 보다 포괄적인 구성은 `/usr/share/mofos/config.sample.toml`에 문서화되어 있습니다.

다음 오류는 구성 파일을 찾을 수 없음을 나타냅니다.```
[-] Copy the sample configuration file from /usr/share/mofos/config.minimal.toml to ~/.config/mofos/config.toml

다음 오류는 현재 사용자가 libvirt 그룹의 구성원이 아님을 나타냅니다:``` [-] libvirtError("authentication unavailable: no polkit agent available to authenticate action 'org.libvirt.unix.manage'")

구성 파일에서 사용자 지정할 주요 구성 설정은 다음과 같습니다:
- key (path): 가상 머신에 접근하는 데 사용되는 SSH 개인 키 파일입니다. 이 목적을 위해 전용 키를 생성하는 것이 좋습니다.
- user (string): 가상 머신에 SSH로 접근할 때 사용할 사용자 이름입니다.
- root_password (hashed value): 새 템플릿을 설치하는 동안 설정할 루트 비밀번호의 해시값입니다.
- root_ssh_pubkey (string): 템플릿 설치 중 root 사용자의 디렉터리에 설치할 공개 SSH 키입니다.

추가로, 템플릿 설치를 위해 다음 매개변수를 구성해야 합니다:
- ntp
- dns (프록시가 제공되는 경우 선택 사항)
- proxy

## 템플릿 설치

### 방화벽 구성

설치 과정은 PXE 네트부트에 의존하므로 활성 인터넷 연결이 필요합니다. 다음 방화벽 규칙을 구성해야 합니다:```
sysctl net.ipv4.ip_forward=1
iptables -t nat -I POSTROUTING -s 192.168.90.0/24 -j MASQUERADE
iptables -t nat -I POSTROUTING -s 192.168.91.0/24 -j MASQUERADE

또는 nftables 사용:``` sysctl net.ipv4.ip_forward=1 nft insert inet nat postrouting iifname "install-*" masquerade nft insert inet nat postrouting iifname "mof0" masquerade

`ip_forward` 매개변수가 1로 설정된 경우, 네트워크의 다른 장치가 호스트를 라우터로 사용하지 못하도록 FORWARD 체인을 구성해야 합니다.

전반적으로 다음 규칙을 권장합니다:```
iptables -I INPUT -i mof0 -p udp --sport 68 --dport 67 -j ACCEPT -m comment --comment "mofos dhcp"
iptables -I INPUT -i mof0 -p udp --dport 69 -j ACCEPT -m comment --comment "mofos tftp"
iptables -I OUTPUT -o mof0 -j ACCEPT -m comment --comment "host -> mofos"
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i mof0 -j ACCEPT -m comment --comment "mofos ->"
iptables -t nat -I POSTROUTING -s 192.168.90.0/24 -j MASQUERADE
iptables -t nat -I POSTROUTING -s 192.168.91.0/24 -j MASQUERADE

또는 nftables로:``` table inet filter {

chain input {
  type filter hook input priority 0; policy drop
  
  iifname "install-*" ip daddr 255.255.255.255 udp sport 68 udp dport 67 accept comment "mofos dhcp"
  iifname "mof0" ip daddr 255.255.255.255 udp sport 68 udp dport 67 accept comment "mofos dhcp"
  iifname "install-*" udp dport 69 accept comment "mofos tftp"
}

chain forward {
  type filter hook forward priority 0; policy drop
  
  ct state established,related accept;
  ct state invalid drop;
  
  iifname "mof0" counter accept
  iifname "install-*" counter accept
}

chain output {
  type filter hook output priority 0; policy drop
  
  oifname "mof0" counter accept
}

} table inet nat { chain postrouting { type nat hook postrouting priority 100 iifname "mof0" masquerade iifname "install-*" masquerade } }

특정 요구 사항에 따라 masquerade 및 forwarding 규칙을 제한하여 mofos 가상 머신이 호스트 네트워크 전체에 접근하지 못하도록 하는 것이 좋습니다.

가상 머신 간 격리는 libvirt hook에 의해 자동으로 적용되며, 제대로 작동하려면 nft가 필요합니다.


### 설치

첫 번째 단계는 초기 레이어인 템플릿을 구축하는 것입니다. 기본적으로 Mofos는 Debian 12 기반 템플릿을 설치할 수 있습니다.```
mofos template create debian-template

참고: 모든 명령에서 --debug 옵션을 사용하면 예기치 않은 동작이 발생할 경우 자세한 기술 정보를 얻을 수 있습니다. 특히 이 명령의 경우 --debug 플래그는 설치 진행 상황을 표시하는 그래픽 창을 강제로 띄웁니다. 또는 virt-manager.를 사용하여 설치를 모니터링할 수 있습니다.

현재 설치에서는 Debian 12 템플릿만 지원됩니다. 아래 Python 딕셔너리는 사용할 설치 이미지를 지정합니다:```python NETBOOT = { "debian-stable-amd64": { "variant": "debian11", "url": "https://deb.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/netboot.tar.gz", } }

변형(variant)은 `debian11`로 설정되어 있다. Debian 12에서는 `osinfo` 변형이 아직 libvirt를 통해 설치할 수 없기 때문이다.

다른 배포판을 설치하려면 `/usr/lib/python3/dist-packages/mofos/settings.py`에 있는 사전(dictionary)을 수정한다.
도구 다운로드