WhiteIntel은 다크 웹을 기반으로 하는 검색 엔진으로, 스틸러 악성 소프트웨어에 의해 회사나 고객이 침해당했는지를 확인하는 무료 기능을 제공합니다.
WhiteIntel의 주요 목표는 정보를 훔치는 악성 소프트웨어로 인한 계정 탈취와 랜섬웨어 공격을 막는 것입니다.
그들의 웹사이트를 방문하여 무료로 엔진을 시험해 볼 수 있습니다:
도커 기본
도커란
도커는 컨테이너화 산업에서 선두 플랫폼으로, 지속적인 혁신을 주도합니다. 이는 전통적인 것부터 미래 지향적인 애플리케이션의 쉬운 생성과 배포를 용이하게 하며, 다양한 환경에서의 안전한 배포를 보장합니다.
기본 도커 아키텍처
containerd: 이것은 컨테이너의 라이프사이클을 포괄적으로 관리하는 핵심 런타임입니다. 이는 이미지 전송 및 저장을 처리하고, 컨테이너의 실행, 모니터링 및 네트워킹을 감독하는 것을 포함합니다. containerd에 대한 더 자세한 통찰력이 더 탐구됩니다.
컨테이너 쉼은 헤들리스 컨테이너를 다루는 데 중요한 역할을 하며, 컨테이너가 초기화된 후 runc에서 매끄럽게 대체합니다.
runc: 가벼우면서 범용적인 컨테이너 런타임 기능으로 인해 존경받는 runc는 OCI 표준과 일치합니다. 이는 containerd가 OCI 지침에 따라 컨테이너를 시작하고 관리하는 데 사용되며, 원래 libcontainer에서 발전했습니다.
grpc는 containerd와 도커 엔진 간의 효율적인 상호 작용을 보장하기 위해 통신을 용이하게 합니다.
OCI는 런타임 및 이미지에 대한 OCI 사양을 유지하는 데 중요하며, 최신 도커 버전은 OCI 이미지 및 런타임 표준 모두와 일치합니다.
기본 명령어
dockerversion#Get version of docker client, API, engine, containerd, runc, docker-initdockerinfo#Get more infomarion about docker settingsdockerpullregistry:5000/alpine#Download the imagedockerinspect<containerid>#Get info of the contaienrdockernetworkls#List network infodockerexec-it<containerid>/bin/sh#Get shell inside a containerdockercommit<cotainerid>registry:5000/name-container#Update containerdockerexport-oalpine.tar<containerid>#Export container as tar filedockersave-oubuntu.tar<image>#Export an imagedockerps-a#List running and stopped containersdockerstop<containedID>#Stop running containerdockerrm<containerID>#Remove container IDdockerimagels#List imagesdockerrmi<imgeID>#Remove imagedockersystemprune-a#This will remove:# - all stopped containers# - all networks not used by at least one container# - all images without at least one container associated to them# - all build cache
Containerd
Containerd는 특히 Docker와 Kubernetes와 같은 컨테이너 플랫폼의 요구를 충족시키기 위해 개발되었습니다. 이는 Linux, Windows, Solaris 등 다양한 운영 체제에서 컨테이너의 실행을 간단하게 하기 위해 운영 체제별 기능과 시스템 호출을 추상화합니다. Containerd의 목표는 사용자가 필요로 하는 핵심 기능만 포함하도록 하여 불필요한 구성 요소를 배제하는 것입니다. 그러나 이 목표를 완전히 달성하는 것은 어려운 과제로 인정되고 있습니다.
중요한 설계 결정 중 하나는 Containerd가 네트워킹을 처리하지 않는 것입니다. 네트워킹은 분산 시스템에서 중요한 요소로 간주되며, 소프트웨어 정의 네트워킹(SDN) 및 서비스 검색과 같은 복잡성은 플랫폼마다 크게 다릅니다. 따라서 Containerd는 네트워킹 측면을 지원하는 플랫폼에게 맡기고 있습니다.
Docker는 Containerd를 활용하여 컨테이너를 실행하지만, Containerd는 Docker의 기능 중 일부만 지원한다는 점을 강조해야 합니다. 구체적으로, Containerd는 Docker에 있는 네트워크 관리 기능을 갖고 있지 않으며 Docker 스웜을 직접 생성하는 것을 지원하지 않습니다. 이 차이점은 Containerd가 컨테이너 실행 환경으로서의 역할에 중점을 두고 있으며, 더 특화된 기능은 통합되는 플랫폼에 위임하고 있음을 강조합니다.
#Containerd CLIctrimagespull--skip-verify--plain-httpregistry:5000/alpine:latest#Get imagectrimageslist#List imagesctrcontainercreateregistry:5000/alpine:latestalpine#Create container called alpinectrcontainerlist#List containersctrcontainerinfo<containerName>#Get container infoctrtaskstart<containerName>#You are given a shell inside of itctrtasklist#Get status of containersctrtasksattach<containerName>#Get shell in running containerctrtaskpause<containerName>#Stop containerctrtasksresume<containerName>#Resume cotainerctrtaskkill-sSIGKILL<containerName>#Stop running containerctrcontainerdelete<containerName>
Podman
Podman은 Open Container Initiative (OCI) standards를 준수하는 오픈 소스 컨테이너 엔진으로, Red Hat에서 개발 및 유지보수되고 있습니다. Docker와는 다른 데몬 없는 아키텍처 및 루트리스 컨테이너 지원과 같은 몇 가지 독특한 기능으로 두드러지며, 사용자가 루트 권한 없이 컨테이너를 실행할 수 있습니다.
Podman은 Docker의 API와 호환되도록 설계되어 Docker CLI 명령어를 사용할 수 있습니다. 이 호환성은 Buildah와 같은 컨테이너 이미지 빌드를 위한 도구 및 Skopeo와 같은 이미지 작업(푸시, 풀, 검사)을 지원하는 도구를 포함한 생태계로 확장됩니다. 이러한 도구에 대한 자세한 내용은 GitHub 페이지에서 확인할 수 있습니다.
주요 차이점
아키텍처: Docker의 클라이언트-서버 모델과는 달리 백그라운드 데몬이 없는 Podman은 데몬 없이 작동합니다. 이 설계는 컨테이너가 시작한 사용자의 권한으로 실행되어 루트 액세스가 필요하지 않아 보안을 강화합니다.
Systemd 통합: Podman은 컨테이너 관리를 위해 systemd와 통합되어 있어 systemd 단위를 통해 컨테이너를 관리할 수 있습니다. 이는 Docker가 주로 Docker 데몬 프로세스를 관리하기 위해 systemd를 사용하는 것과 대조됩니다.
루트리스 컨테이너: Podman의 중요한 기능 중 하나는 컨테이너를 시작한 사용자의 권한으로 실행할 수 있는 능력입니다. 이 접근 방식은 공격자가 손상된 사용자의 권한만 획들하고 루트 액세스를 얻지 못하도록 하여 컨테이너 침입과 관련된 위험을 최소화합니다.
Podman의 접근 방식은 Docker에 대한 안전하고 유연한 대안을 제공하며 사용자 권한 관리와 기존 Docker 워크플로와의 호환성을 강조합니다.
Podman이 동일한 API를 지원하도록 설계되었기 때문에 podman에서도 docker와 동일한 명령어를 사용할 수 있습니다.
podman--versionpodmaninfopdomanimageslspodmanls
기본 정보
원격 API는 기본적으로 2375 포트에서 실행됩니다. 활성화되면 인증이 필요하지 않으며, 공격자가 특권이 있는 도커 컨테이너를 시작할 수 있습니다. 원격 API를 사용하면 호스트/ (루트 디렉토리)를 컨테이너에 연결하고 호스트 환경의 파일을 읽거나 쓸 수 있습니다.
기본 포트: 2375
PORT STATE SERVICE
2375/tcp open docker
열거
수동
도커 API를 열거하려면 다음 예와 같이 docker 명령 또는 curl을 사용할 수 있습니다:
다음 청크에서 Falco가 커널 모듈을 컴파일하고 삽입하는 방법을 확인하세요. 그 후 규칙을 로드하고 수상한 활동을 기록하기 시작합니다. 이 경우 2개의 특권 컨테이너가 시작되었고, 그 중 하나는 민감한 마운트를 가지고 있으며, 어떤 시간 후에 컨테이너 중 하나에서 셸이 열렸음을 감지했습니다.
docker run -it --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro falco
* Setting up /usr/src links from host* Unloading falco-probe, ifpresent* Running dkms install for falcoKernelpreparationunnecessaryforthiskernel.Skipping...Buildingmodule:cleaningbuildarea......make -j3 KERNELRELEASE=5.0.0-20-generic -C /lib/modules/5.0.0-20-generic/build M=/var/lib/dkms/falco/0.18.0/build.............
cleaningbuildarea......DKMS:buildcompleted.falco-probe.ko:Runningmoduleversionsanitycheck.modinfo:ERROR:missingmoduleorfilename.-Originalmodule-Nooriginalmoduleexistswithinthiskernel-Installation-Installingto/lib/modules/5.0.0-20-generic/kernel/extra/mkdir:cannotcreatedirectory'/lib/modules/5.0.0-20-generic/kernel/extra':Read-onlyfilesystemcp:cannotcreateregularfile'/lib/modules/5.0.0-20-generic/kernel/extra/falco-probe.ko':Nosuchfileordirectorydepmod...DKMS:installcompleted.* Trying to load a dkms falco-probe, ifpresentfalco-probefoundandloadedindkms2021-01-04T12:03:20+0000:Falcoinitializedwithconfigurationfile/etc/falco/falco.yaml2021-01-04T12:03:20+0000:Loadingrulesfromfile/etc/falco/falco_rules.yaml:2021-01-04T12:03:22+0000:Loadingrulesfromfile/etc/falco/falco_rules.local.yaml:2021-01-04T12:03:22+0000:Loadingrulesfromfile/etc/falco/k8s_audit_rules.yaml:2021-01-04T12:03:24+0000:Startinginternalwebserver,listeningonport87652021-01-04T12:03:24.646959000+0000: Notice Privileged container started (user=<NA> command=container:db5dfd1b6a32 laughing_kowalevski (id=db5dfd1b6a32) image=ubuntu:18.04)
2021-01-04T12:03:24.664354000+0000: Notice Container with sensitive mount started (user=<NA> command=container:4822e8378c00 xenodochial_kepler (id=4822e8378c00) image=ubuntu:modified mounts=/:/host::true:rslave)
2021-01-04T12:03:24.664354000+0000: Notice Privileged container started (user=root command=container:4443a8daceb8 focused_brahmagupta (id=4443a8daceb8) image=falco:latest)
2021-01-04T12:04:56.270553320+0000: Notice A shell was spawned in a container with an attached terminal (user=root xenodochial_kepler (id=4822e8378c00) shell=bash parent=runc cmdline=bash terminal=34816 container_id=4822e8378c00 image=ubuntu)