From e88660840ec9c476989e85a850e98f66f99eb304 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 9 Dec 2019 12:39:21 +0200 Subject: [PATCH 01/40] Initial infra with a couple of example machines and island --- envs/os_compatability/aws_keys/.gitignore | 4 + envs/os_compatability/terraform/config.tf | 5 + envs/os_compatability/terraform/infra.tf | 92 +++++++++++++++++++ .../terraform/instance_template/main.tf | 12 +++ .../terraform/instance_template/variables.tf | 17 ++++ envs/os_compatability/terraform/instances.tf | 41 +++++++++ 6 files changed, 171 insertions(+) create mode 100644 envs/os_compatability/aws_keys/.gitignore create mode 100644 envs/os_compatability/terraform/config.tf create mode 100644 envs/os_compatability/terraform/infra.tf create mode 100644 envs/os_compatability/terraform/instance_template/main.tf create mode 100644 envs/os_compatability/terraform/instance_template/variables.tf create mode 100644 envs/os_compatability/terraform/instances.tf diff --git a/envs/os_compatability/aws_keys/.gitignore b/envs/os_compatability/aws_keys/.gitignore new file mode 100644 index 000000000..5e7d2734c --- /dev/null +++ b/envs/os_compatability/aws_keys/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/envs/os_compatability/terraform/config.tf b/envs/os_compatability/terraform/config.tf new file mode 100644 index 000000000..9884c24a2 --- /dev/null +++ b/envs/os_compatability/terraform/config.tf @@ -0,0 +1,5 @@ +provider "aws" { + version = "~> 2.0" + region = "eu-central-1" + shared_credentials_file = "../aws_keys/accessKeys" +} diff --git a/envs/os_compatability/terraform/infra.tf b/envs/os_compatability/terraform/infra.tf new file mode 100644 index 000000000..c561acb02 --- /dev/null +++ b/envs/os_compatability/terraform/infra.tf @@ -0,0 +1,92 @@ +resource "aws_vpc" "os_compat_vpc" { + cidr_block = "10.0.0.0/24" + enable_dns_support = true + tags = { + Name = "os_compat_vpc" + } +} + +resource "aws_internet_gateway" "os_compat_gateway" { + vpc_id = "${aws_vpc.os_compat_vpc.id}" + + tags = { + Name = "os_compat_gateway" + } +} + +// create routing table which points to the internet gateway +resource "aws_route_table" "os_compat_route" { + vpc_id = "${aws_vpc.os_compat_vpc.id}" + + route { + cidr_block = "0.0.0.0/0" + gateway_id = "${aws_internet_gateway.os_compat_gateway.id}" + } + + tags = { + Name = "os_compat_route" + } +} + +// associate the routing table with the subnet +resource "aws_route_table_association" "subnet-association" { + subnet_id = "${aws_subnet.main.id}" + route_table_id = "${aws_route_table.os_compat_route.id}" +} + +resource "aws_subnet" "main" { + vpc_id = "${aws_vpc.os_compat_vpc.id}" + cidr_block = "10.0.0.0/24" + + tags = { + Name = "Main" + } +} + +resource "aws_security_group" "os_compat_islad" { + name = "os_compat_island" + description = "Allow remote access to the island" + vpc_id = "${aws_vpc.os_compat_vpc.id}" + + ingress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = "os_compat_island" + } +} + +resource "aws_security_group" "os_compat_instance" { + name = "os_compat_instance" + description = "Disables remote access to vulnerable instances" + vpc_id = "${aws_vpc.os_compat_vpc.id}" + + ingress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = "os_compat_instance" + } +} diff --git a/envs/os_compatability/terraform/instance_template/main.tf b/envs/os_compatability/terraform/instance_template/main.tf new file mode 100644 index 000000000..5c95b55b4 --- /dev/null +++ b/envs/os_compatability/terraform/instance_template/main.tf @@ -0,0 +1,12 @@ +resource "aws_instance" "os_test_machine" { + ami = "${var.ami}" + instance_type = "t2.micro" + private_ip = "${var.ip}" + subnet_id = "${data.aws_subnet.main.id}" + key_name = "os_compat" + tags = { + Name = "${var.name}" + } + security_groups = ["${data.aws_security_group.os_compat_instance.id}"] + associate_public_ip_address = false +} diff --git a/envs/os_compatability/terraform/instance_template/variables.tf b/envs/os_compatability/terraform/instance_template/variables.tf new file mode 100644 index 000000000..baa480461 --- /dev/null +++ b/envs/os_compatability/terraform/instance_template/variables.tf @@ -0,0 +1,17 @@ +variable "ami" {type=string} +variable "ip" {type=string} +variable "name" {type=string} +variable "env_vars" { + type = object({ + subnet_id = string + security_group_id = string + }) +} + +data "aws_subnet" "main" { + id = "${var.env_vars.subnet_id}" +} + +data "aws_security_group" "os_compat_instance" { + id = "${var.env_vars.security_group_id}" +} diff --git a/envs/os_compatability/terraform/instances.tf b/envs/os_compatability/terraform/instances.tf new file mode 100644 index 000000000..4257230da --- /dev/null +++ b/envs/os_compatability/terraform/instances.tf @@ -0,0 +1,41 @@ +resource "aws_instance" "island" { + ami = "ami-01cc9554aa0b4c00e" + instance_type = "t2.micro" + private_ip = "10.0.0.251" + subnet_id = "${aws_subnet.main.id}" + key_name = "os_compat" + tags = { + Name = "os_compat_ISLAND" + } + security_groups = ["${aws_security_group.os_compat_islad.id}"] + associate_public_ip_address = true + root_block_device { + volume_size = "30" + volume_type = "standard" + delete_on_termination = true + } + #associate_public_ip_address = false +} + +locals { + env_vars = { + subnet_id = "${aws_subnet.main.id}" + security_group_id = "${aws_security_group.os_compat_instance.id}" + } +} + +module "ubuntu_12" { + source = "./instance_template" + name = "ubuntu_12" + ami = "ami-003d0b1d" + ip = "10.0.0.6" + env_vars = "${local.env_vars}" +} + +module "ubuntu_14" { + source = "./instance_template" + name = "ubuntu_14" + ami = "ami-067ee10914e74ffee" + ip = "10.0.0.7" + env_vars = "${local.env_vars}" +} From dd435be8e2263ce07ee984209b8ff5586635311d Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 11 Dec 2019 18:13:19 +0200 Subject: [PATCH 02/40] Added working modern instances. win2003 and kali not working --- .../terraform/instance_template/main.tf | 5 +- .../terraform/instance_template/variables.tf | 8 +- envs/os_compatability/terraform/instances.tf | 176 +++++++++++++++++- 3 files changed, 182 insertions(+), 7 deletions(-) diff --git a/envs/os_compatability/terraform/instance_template/main.tf b/envs/os_compatability/terraform/instance_template/main.tf index 5c95b55b4..e20725e2e 100644 --- a/envs/os_compatability/terraform/instance_template/main.tf +++ b/envs/os_compatability/terraform/instance_template/main.tf @@ -7,6 +7,7 @@ resource "aws_instance" "os_test_machine" { tags = { Name = "${var.name}" } - security_groups = ["${data.aws_security_group.os_compat_instance.id}"] - associate_public_ip_address = false + vpc_security_group_ids = ["${data.aws_security_group.os_compat_instance.id}"] + associate_public_ip_address = true + user_data = "${var.user_data}" } diff --git a/envs/os_compatability/terraform/instance_template/variables.tf b/envs/os_compatability/terraform/instance_template/variables.tf index baa480461..519ea8d79 100644 --- a/envs/os_compatability/terraform/instance_template/variables.tf +++ b/envs/os_compatability/terraform/instance_template/variables.tf @@ -1,10 +1,14 @@ variable "ami" {type=string} variable "ip" {type=string} variable "name" {type=string} +variable "user_data" { + type=string + default="" +} variable "env_vars" { type = object({ subnet_id = string - security_group_id = string + vpc_security_group_ids = string }) } @@ -13,5 +17,5 @@ data "aws_subnet" "main" { } data "aws_security_group" "os_compat_instance" { - id = "${var.env_vars.security_group_id}" + id = "${var.env_vars.vpc_security_group_ids}" } diff --git a/envs/os_compatability/terraform/instances.tf b/envs/os_compatability/terraform/instances.tf index 4257230da..fc3f311eb 100644 --- a/envs/os_compatability/terraform/instances.tf +++ b/envs/os_compatability/terraform/instances.tf @@ -7,7 +7,7 @@ resource "aws_instance" "island" { tags = { Name = "os_compat_ISLAND" } - security_groups = ["${aws_security_group.os_compat_islad.id}"] + vpc_security_group_ids = ["${aws_security_group.os_compat_islad.id}"] associate_public_ip_address = true root_block_device { volume_size = "30" @@ -20,22 +20,192 @@ resource "aws_instance" "island" { locals { env_vars = { subnet_id = "${aws_subnet.main.id}" - security_group_id = "${aws_security_group.os_compat_instance.id}" + vpc_security_group_ids = "${aws_security_group.os_compat_instance.id}" } + + user_data_linux_64 = < +add-type @" + using System.Net; + using System.Security.Cryptography.X509Certificates; + public class TrustAllCertsPolicy : ICertificatePolicy { + public bool CheckValidationResult( + ServicePoint srvPoint, X509Certificate certificate, + WebRequest request, int certificateProblem) { + return true; + } + } +"@ +[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy +Set-MpPreference -DisableRealtimeMonitoring $true -ErrorAction SilentlyContinue +Invoke-WebRequest -Uri 'https://10.0.0.251:5000/api/monkey/download/monkey-windows-64.exe' -OutFile 'C:\windows\temp\monkey-windows-64.exe' -UseBasicParsing +C:\windows\temp\monkey-windows-64.exe m0nk3y -s 10.0.0.251:5000 + +true +EOF + + user_data_windows_32 = < +add-type @" + using System.Net; + using System.Security.Cryptography.X509Certificates; + public class TrustAllCertsPolicy : ICertificatePolicy { + public bool CheckValidationResult( + ServicePoint srvPoint, X509Certificate certificate, + WebRequest request, int certificateProblem) { + return true; + } + } +"@ +[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy +Set-MpPreference -DisableRealtimeMonitoring $true -ErrorAction SilentlyContinue +Invoke-WebRequest -Uri 'https://10.0.0.251:5000/api/monkey/download/monkey-windows-32.exe' -OutFile 'C:\windows\temp\monkey-windows-32.exe' -UseBasicParsing +C:\windows\temp\monkey-windows-32.exe m0nk3y -s 10.0.0.251:5000 + +true +EOF + +user_data_windows_bits_32 = < +bitsadmin /transfer Update /download /priority high https://10.0.0.251:5000/api/monkey/download/monkey-windows-32.exe C:\windows\temp\monkey-windows-32.exe +powershell -Command "(New-Object Net.WebClient).DownloadFile('https://github.com/guardicore/monkey/releases/download/1.6/monkey-linux-32', 'package.zip')" +C:\windows\temp\monkey-windows-32.exe m0nk3y -s 10.0.0.251:5000 + +true +EOF +} + +module "kali_2019" { + source = "./instance_template" + name = "kali_2019" + ami = "ami-05d64b1d0f967d4bf" + ip = "10.0.0.99" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "rhel_8" { + source = "./instance_template" + name = "rhel_8" + ami = "ami-0badcc5b522737046" + ip = "10.0.0.88" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" } module "ubuntu_12" { source = "./instance_template" name = "ubuntu_12" ami = "ami-003d0b1d" - ip = "10.0.0.6" + ip = "10.0.0.22" env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" } module "ubuntu_14" { source = "./instance_template" name = "ubuntu_14" ami = "ami-067ee10914e74ffee" + ip = "10.0.0.24" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "ubuntu_19" { + source = "./instance_template" + name = "ubuntu_19" + ami = "ami-001b87954b72ea3ac" + ip = "10.0.0.29" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "centos" { + source = "./instance_template" + name = "centos_8" + ami = "ami-0034c84e4e9c557bd" + ip = "10.0.0.33" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + + +module "windows_2003_r2_32" { + source = "./instance_template" + name = "windows_2003_r2_32" + ami = "ami-01e4fa6d" + ip = "10.0.0.4" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_windows_64}" +} + +module "windows_2008" { + source = "./instance_template" + name = "windows_2008" + ami = "ami-0d8c60e4d3ca36ed6" + ip = "10.0.0.8" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_windows_64}" +} + +module "windows_2008_r2" { + source = "./instance_template" + name = "windows_2008_r2" + ami = "ami-0252def122d07efd3" ip = "10.0.0.7" env_vars = "${local.env_vars}" + user_data = "${local.user_data_windows_64}" +} + +module "windows_2012" { + source = "./instance_template" + name = "windows_2012" + ami = "ami-0d8c60e4d3ca36ed6" + ip = "10.0.0.12" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_windows_64}" +} + +module "windows_2012_r2" { + source = "./instance_template" + name = "windows_2012_r2" + ami = "ami-08dcceb529e70f875" + ip = "10.0.0.11" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_windows_64}" +} + +module "windows_2019" { + source = "./instance_template" + name = "windows_2019" + ami = "ami-09fe2745618d2af42" + ip = "10.0.0.19" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_windows_64}" } From 79dade2a3f9b31386b9dbbd5de21c3cc2c0c85db Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Thu, 12 Dec 2019 17:26:40 +0200 Subject: [PATCH 03/40] Added all machines to the terraform list --- .../terraform/instance_template/main.tf | 2 +- .../terraform/instance_template/variables.tf | 4 + envs/os_compatability/terraform/instances.tf | 198 ++++++++++++++++-- 3 files changed, 185 insertions(+), 19 deletions(-) diff --git a/envs/os_compatability/terraform/instance_template/main.tf b/envs/os_compatability/terraform/instance_template/main.tf index e20725e2e..44c1c9c76 100644 --- a/envs/os_compatability/terraform/instance_template/main.tf +++ b/envs/os_compatability/terraform/instance_template/main.tf @@ -1,6 +1,6 @@ resource "aws_instance" "os_test_machine" { ami = "${var.ami}" - instance_type = "t2.micro" + instance_type = "${var.type}" private_ip = "${var.ip}" subnet_id = "${data.aws_subnet.main.id}" key_name = "os_compat" diff --git a/envs/os_compatability/terraform/instance_template/variables.tf b/envs/os_compatability/terraform/instance_template/variables.tf index 519ea8d79..aba55739d 100644 --- a/envs/os_compatability/terraform/instance_template/variables.tf +++ b/envs/os_compatability/terraform/instance_template/variables.tf @@ -1,6 +1,10 @@ variable "ami" {type=string} variable "ip" {type=string} variable "name" {type=string} +variable "type" { + type=string + default="t2.micro" +} variable "user_data" { type=string default="" diff --git a/envs/os_compatability/terraform/instances.tf b/envs/os_compatability/terraform/instances.tf index fc3f311eb..c8b892f89 100644 --- a/envs/os_compatability/terraform/instances.tf +++ b/envs/os_compatability/terraform/instances.tf @@ -47,6 +47,32 @@ wget --no-check-certificate https://10.0.0.251:5000/api/monkey/download/monkey-l chmod +x ./monkey-linux-64 ./monkey-linux-64 m0nk3y -s 10.0.0.251:5000 --// +EOF + + user_data_linux_32 = < true EOF +} -user_data_windows_bits_32 = < -bitsadmin /transfer Update /download /priority high https://10.0.0.251:5000/api/monkey/download/monkey-windows-32.exe C:\windows\temp\monkey-windows-32.exe -powershell -Command "(New-Object Net.WebClient).DownloadFile('https://github.com/guardicore/monkey/releases/download/1.6/monkey-linux-32', 'package.zip')" -C:\windows\temp\monkey-windows-32.exe m0nk3y -s 10.0.0.251:5000 - -true -EOF +module "centos_6" { + source = "./instance_template" + name = "centos_6" + ami = "ami-07fa74e425f2abf29" + ip = "10.0.0.36" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "centos_7" { + source = "./instance_template" + name = "centos_7" + ami = "ami-0034b52a39b9fb0e8" + ip = "10.0.0.37" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "centos_8" { + source = "./instance_template" + name = "centos_8" + ami = "ami-0034c84e4e9c557bd" + ip = "10.0.0.38" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "suse_12" { + source = "./instance_template" + name = "suse_12" + ami = "ami-07b12b913a7e36b08" + ip = "10.0.0.42" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "suse_11" { + source = "./instance_template" + name = "suse_11" + ami = "ami-0083986c" + ip = "10.0.0.41" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" } module "kali_2019" { @@ -109,6 +171,34 @@ module "kali_2019" { env_vars = "${local.env_vars}" user_data = "${local.user_data_linux_64}" } +// Requires m3.medium +//module "rhel_5" { +// source = "./instance_template" +// name = "rhel_5" +// ami = "ami-a48cbfb9" +// type = "m3.medium" +// ip = "10.0.0.85" +// env_vars = "${local.env_vars}" +// user_data = "${local.user_data_linux_64}" +//} + +module "rhel_6" { + source = "./instance_template" + name = "rhel_6" + ami = "ami-0af3f0e0918f47bcf" + ip = "10.0.0.86" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "rhel_7" { + source = "./instance_template" + name = "rhel_7" + ami = "ami-0b5edb134b768706c" + ip = "10.0.0.87" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} module "rhel_8" { source = "./instance_template" @@ -119,6 +209,51 @@ module "rhel_8" { user_data = "${local.user_data_linux_64}" } +module "debian_7" { + source = "./instance_template" + name = "debian_7" + ami = "ami-0badcc5b522737046" + ip = "10.0.0.77" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "debian_8" { + source = "./instance_template" + name = "debian_8" + ami = "ami-0badcc5b522737046" + ip = "10.0.0.78" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "debian_9" { + source = "./instance_template" + name = "debian_9" + ami = "ami-0badcc5b522737046" + ip = "10.0.0.79" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "oracle_6" { + source = "./instance_template" + name = "oracle_6" + ami = "ami-0f9b69f34108a3770" + ip = "10.0.0.66" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + +module "oracle_7" { + source = "./instance_template" + name = "oracle_7" + ami = "ami-001e494dc0f3372bc" + ip = "10.0.0.67" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_linux_64}" +} + module "ubuntu_12" { source = "./instance_template" name = "ubuntu_12" @@ -128,6 +263,16 @@ module "ubuntu_12" { user_data = "${local.user_data_linux_64}" } +// Requires m3.medium instance +// module "ubuntu_12_32" { +// source = "./instance_template" +// name = "ubuntu_12_32" +// ami = "ami-06003c1b" +// ip = "10.0.0.23" +// env_vars = "${local.env_vars}" +// user_data = "${local.user_data_linux_32}" +// } + module "ubuntu_14" { source = "./instance_template" name = "ubuntu_14" @@ -146,16 +291,6 @@ module "ubuntu_19" { user_data = "${local.user_data_linux_64}" } -module "centos" { - source = "./instance_template" - name = "centos_8" - ami = "ami-0034c84e4e9c557bd" - ip = "10.0.0.33" - env_vars = "${local.env_vars}" - user_data = "${local.user_data_linux_64}" -} - - module "windows_2003_r2_32" { source = "./instance_template" name = "windows_2003_r2_32" @@ -165,6 +300,15 @@ module "windows_2003_r2_32" { user_data = "${local.user_data_windows_64}" } +module "windows_2003" { + source = "./instance_template" + name = "windows_2003" + ami = "ami-9e023183" + ip = "10.0.0.5" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_windows_64}" +} + module "windows_2008" { source = "./instance_template" name = "windows_2008" @@ -174,6 +318,15 @@ module "windows_2008" { user_data = "${local.user_data_windows_64}" } +module "windows_2008_32" { + source = "./instance_template" + name = "windows_2008" + ami = "ami-0acaec54bac5cbb8f" + ip = "10.0.0.6" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_windows_32}" +} + module "windows_2008_r2" { source = "./instance_template" name = "windows_2008_r2" @@ -201,6 +354,15 @@ module "windows_2012_r2" { user_data = "${local.user_data_windows_64}" } +module "windows_2016" { + source = "./instance_template" + name = "windows_2016" + ami = "ami-02a6791b44938cfcd" + ip = "10.0.0.16" + env_vars = "${local.env_vars}" + user_data = "${local.user_data_windows_64}" +} + module "windows_2019" { source = "./instance_template" name = "windows_2019" From 63569df0973ddc0432fc5b91a94b3ba601c8c617 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 13 Dec 2019 17:07:31 +0200 Subject: [PATCH 04/40] Added monkey maker env that's responsible for monkey building islands --- envs/monkey_maker/aws_keys/.gitignore | 4 ++ envs/monkey_maker/terraform/config.tf | 5 ++ envs/monkey_maker/terraform/infra.tf | 68 ++++++++++++++++++++++++ envs/monkey_maker/terraform/instances.tf | 25 +++++++++ 4 files changed, 102 insertions(+) create mode 100644 envs/monkey_maker/aws_keys/.gitignore create mode 100644 envs/monkey_maker/terraform/config.tf create mode 100644 envs/monkey_maker/terraform/infra.tf create mode 100644 envs/monkey_maker/terraform/instances.tf diff --git a/envs/monkey_maker/aws_keys/.gitignore b/envs/monkey_maker/aws_keys/.gitignore new file mode 100644 index 000000000..5e7d2734c --- /dev/null +++ b/envs/monkey_maker/aws_keys/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/envs/monkey_maker/terraform/config.tf b/envs/monkey_maker/terraform/config.tf new file mode 100644 index 000000000..9884c24a2 --- /dev/null +++ b/envs/monkey_maker/terraform/config.tf @@ -0,0 +1,5 @@ +provider "aws" { + version = "~> 2.0" + region = "eu-central-1" + shared_credentials_file = "../aws_keys/accessKeys" +} diff --git a/envs/monkey_maker/terraform/infra.tf b/envs/monkey_maker/terraform/infra.tf new file mode 100644 index 000000000..bae2219c9 --- /dev/null +++ b/envs/monkey_maker/terraform/infra.tf @@ -0,0 +1,68 @@ +resource "aws_vpc" "monkey_maker" { + cidr_block = "10.0.0.0/24" + enable_dns_support = true + tags = { + Name = "monkey_maker_vpc" + } +} + +resource "aws_internet_gateway" "monkey_maker_gateway" { + vpc_id = "${aws_vpc.monkey_maker.id}" + + tags = { + Name = "monkey_maker_gateway" + } +} + +// create routing table which points to the internet gateway +resource "aws_route_table" "monkey_maker_route" { + vpc_id = "${aws_vpc.monkey_maker.id}" + + route { + cidr_block = "0.0.0.0/0" + gateway_id = "${aws_internet_gateway.monkey_maker_gateway.id}" + } + + tags = { + Name = "monkey_maker_route" + } +} + +// associate the routing table with the subnet +resource "aws_route_table_association" "subnet-association" { + subnet_id = "${aws_subnet.main.id}" + route_table_id = "${aws_route_table.monkey_maker_route.id}" +} + +resource "aws_subnet" "main" { + vpc_id = "${aws_vpc.monkey_maker.id}" + cidr_block = "10.0.0.0/24" + + tags = { + Name = "Main" + } +} + +resource "aws_security_group" "monkey_maker_sg" { + name = "monkey_maker_sg" + description = "Allow remote access to the island" + vpc_id = "${aws_vpc.monkey_maker.id}" + + ingress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = "monkey_maker_sg" + } +} diff --git a/envs/monkey_maker/terraform/instances.tf b/envs/monkey_maker/terraform/instances.tf new file mode 100644 index 000000000..a7dec7ab1 --- /dev/null +++ b/envs/monkey_maker/terraform/instances.tf @@ -0,0 +1,25 @@ +resource "aws_instance" "island_windows" { + ami = "ami-09fe2745618d2af42" + instance_type = "t2.micro" + private_ip = "10.0.0.251" + subnet_id = "${aws_subnet.main.id}" + key_name = "monkey_maker" + tags = { + Name = "monkey_maker_windows" + } + vpc_security_group_ids = ["${aws_security_group.monkey_maker_sg.id}"] + associate_public_ip_address = true +} + +resource "aws_instance" "island_linux_64" { + ami = "ami-050a22b7e0cf85dd0" + instance_type = "t2.micro" + private_ip = "10.0.0.252" + subnet_id = "${aws_subnet.main.id}" + key_name = "monkey_maker" + tags = { + Name = "monkey_maker_linux_64" + } + vpc_security_group_ids = ["${aws_security_group.monkey_maker_sg.id}"] + associate_public_ip_address = true +} From f2c7b1a32b6c76ecb7b03e9fbc8b09d0c10769cf Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 16 Dec 2019 18:41:31 +0200 Subject: [PATCH 05/40] Added readmes, improved instance naming --- envs/monkey_maker/README.md | 28 +++++++++++++++++++ envs/monkey_maker/terraform/instances.tf | 2 +- envs/os_compatability/README.md | 28 +++++++++++++++++++ .../terraform/instance_template/main.tf | 2 +- envs/os_compatability/terraform/instances.tf | 2 +- 5 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 envs/monkey_maker/README.md create mode 100644 envs/os_compatability/README.md diff --git a/envs/monkey_maker/README.md b/envs/monkey_maker/README.md new file mode 100644 index 000000000..275ab6bbf --- /dev/null +++ b/envs/monkey_maker/README.md @@ -0,0 +1,28 @@ +# Monkey maker + +## About + +Monkey maker is an environment on AWS that +is designed for monkey binary building. +This environment is deployed using terraform scripts +located in this directory. + +## Setup + +To setup you need to put `accessKeys` file into `./aws_keys` directory. + +Contents of `accessKeys` file should be as follows: + +``` +[default] +aws_access_key_id = <...> +aws_secret_access_key = <...> +``` +Also review `./terraform/config.tf` file. + +Launch the environment by going into `terraform` folder and running +```angular2html +terraform init +terraform apply +``` + diff --git a/envs/monkey_maker/terraform/instances.tf b/envs/monkey_maker/terraform/instances.tf index a7dec7ab1..495b2ca64 100644 --- a/envs/monkey_maker/terraform/instances.tf +++ b/envs/monkey_maker/terraform/instances.tf @@ -1,5 +1,5 @@ resource "aws_instance" "island_windows" { - ami = "ami-09fe2745618d2af42" + ami = "ami-086f705bf43f47ae7" instance_type = "t2.micro" private_ip = "10.0.0.251" subnet_id = "${aws_subnet.main.id}" diff --git a/envs/os_compatability/README.md b/envs/os_compatability/README.md new file mode 100644 index 000000000..efeb04319 --- /dev/null +++ b/envs/os_compatability/README.md @@ -0,0 +1,28 @@ +# OS compatibility + +## About + +OS compatibility is an environment on AWS that +is designed to test monkey binary compatibility on +different operating systems. +This environment is deployed using terraform scripts +located in this directory. + +## Setup + +To setup you need to put `accessKeys` file into `./aws_keys` directory. + +Contents of `accessKeys` file should be as follows: + +``` +[default] +aws_access_key_id = <...> +aws_secret_access_key = <...> +``` +Also review `./terraform/config.tf` file. + +Launch the environment by going into `terraform` folder and running +```angular2html +terraform init +terraform apply +``` diff --git a/envs/os_compatability/terraform/instance_template/main.tf b/envs/os_compatability/terraform/instance_template/main.tf index 44c1c9c76..1709a4de1 100644 --- a/envs/os_compatability/terraform/instance_template/main.tf +++ b/envs/os_compatability/terraform/instance_template/main.tf @@ -5,7 +5,7 @@ resource "aws_instance" "os_test_machine" { subnet_id = "${data.aws_subnet.main.id}" key_name = "os_compat" tags = { - Name = "${var.name}" + Name = "os_compat_${var.name}" } vpc_security_group_ids = ["${data.aws_security_group.os_compat_instance.id}"] associate_public_ip_address = true diff --git a/envs/os_compatability/terraform/instances.tf b/envs/os_compatability/terraform/instances.tf index c8b892f89..7a3cd9285 100644 --- a/envs/os_compatability/terraform/instances.tf +++ b/envs/os_compatability/terraform/instances.tf @@ -320,7 +320,7 @@ module "windows_2008" { module "windows_2008_32" { source = "./instance_template" - name = "windows_2008" + name = "windows_2008_32" ami = "ami-0acaec54bac5cbb8f" ip = "10.0.0.6" env_vars = "${local.env_vars}" From 48dcc8803536136b0c5f48de701b8defea27ad35 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Tue, 17 Dec 2019 12:01:58 +0200 Subject: [PATCH 06/40] Added a pytest to test compatibility, fixed typo in folder name --- .../README.md | 7 ++ .../aws_keys/.gitignore | 0 envs/os_compatibility/conftest.py | 11 ++++ .../terraform/config.tf | 0 .../terraform/infra.tf | 0 .../terraform/instance_template/main.tf | 0 .../terraform/instance_template/variables.tf | 0 .../terraform/instances.tf | 4 ++ envs/os_compatibility/test_compatibility.py | 64 +++++++++++++++++++ 9 files changed, 86 insertions(+) rename envs/{os_compatability => os_compatibility}/README.md (66%) rename envs/{os_compatability => os_compatibility}/aws_keys/.gitignore (100%) create mode 100644 envs/os_compatibility/conftest.py rename envs/{os_compatability => os_compatibility}/terraform/config.tf (100%) rename envs/{os_compatability => os_compatibility}/terraform/infra.tf (100%) rename envs/{os_compatability => os_compatibility}/terraform/instance_template/main.tf (100%) rename envs/{os_compatability => os_compatibility}/terraform/instance_template/variables.tf (100%) rename envs/{os_compatability => os_compatibility}/terraform/instances.tf (98%) create mode 100644 envs/os_compatibility/test_compatibility.py diff --git a/envs/os_compatability/README.md b/envs/os_compatibility/README.md similarity index 66% rename from envs/os_compatability/README.md rename to envs/os_compatibility/README.md index efeb04319..9dd136ae7 100644 --- a/envs/os_compatability/README.md +++ b/envs/os_compatibility/README.md @@ -26,3 +26,10 @@ Launch the environment by going into `terraform` folder and running terraform init terraform apply ``` + +## Usage +1. Launch os_compat_ISLAND machine and upload your binaries/update island +2. Launch/Reboot all other os_compat test machines +3. Wait until machines boot and run monkey +4. Launch `test_compatibility.py` pytest script with island ip parameter +(e.g. `test_compatibility.py --island 111.111.111.111:5000`) diff --git a/envs/os_compatability/aws_keys/.gitignore b/envs/os_compatibility/aws_keys/.gitignore similarity index 100% rename from envs/os_compatability/aws_keys/.gitignore rename to envs/os_compatibility/aws_keys/.gitignore diff --git a/envs/os_compatibility/conftest.py b/envs/os_compatibility/conftest.py new file mode 100644 index 000000000..13aabf5b6 --- /dev/null +++ b/envs/os_compatibility/conftest.py @@ -0,0 +1,11 @@ +import pytest + + +def pytest_addoption(parser): + parser.addoption("--island", action="store", default="", + help="Specify the Monkey Island address (host+port).") + + +@pytest.fixture(scope='module') +def island(request): + return request.config.getoption("--island") diff --git a/envs/os_compatability/terraform/config.tf b/envs/os_compatibility/terraform/config.tf similarity index 100% rename from envs/os_compatability/terraform/config.tf rename to envs/os_compatibility/terraform/config.tf diff --git a/envs/os_compatability/terraform/infra.tf b/envs/os_compatibility/terraform/infra.tf similarity index 100% rename from envs/os_compatability/terraform/infra.tf rename to envs/os_compatibility/terraform/infra.tf diff --git a/envs/os_compatability/terraform/instance_template/main.tf b/envs/os_compatibility/terraform/instance_template/main.tf similarity index 100% rename from envs/os_compatability/terraform/instance_template/main.tf rename to envs/os_compatibility/terraform/instance_template/main.tf diff --git a/envs/os_compatability/terraform/instance_template/variables.tf b/envs/os_compatibility/terraform/instance_template/variables.tf similarity index 100% rename from envs/os_compatability/terraform/instance_template/variables.tf rename to envs/os_compatibility/terraform/instance_template/variables.tf diff --git a/envs/os_compatability/terraform/instances.tf b/envs/os_compatibility/terraform/instances.tf similarity index 98% rename from envs/os_compatability/terraform/instances.tf rename to envs/os_compatibility/terraform/instances.tf index 7a3cd9285..3f5cc8658 100644 --- a/envs/os_compatability/terraform/instances.tf +++ b/envs/os_compatibility/terraform/instances.tf @@ -1,3 +1,7 @@ +// Instances of machines in os_compat environment +// !!! Don't forget to add machines to test_compatibility.py if you add here !!! + + resource "aws_instance" "island" { ami = "ami-01cc9554aa0b4c00e" instance_type = "t2.micro" diff --git a/envs/os_compatibility/test_compatibility.py b/envs/os_compatibility/test_compatibility.py new file mode 100644 index 000000000..da46bc71c --- /dev/null +++ b/envs/os_compatibility/test_compatibility.py @@ -0,0 +1,64 @@ +import pytest + +from envs.monkey_zoo.blackbox.island_client.monkey_island_client import MonkeyIslandClient + + +machine_list = { + "10.0.0.36": "centos_6", + "10.0.0.37": "centos_7", + "10.0.0.38": "centos_8", + "10.0.0.42": "suse_12", + "10.0.0.41": "suse_11", + "10.0.0.99": "kali_2019", + "10.0.0.86": "rhel_6", + "10.0.0.87": "rhel_7", + "10.0.0.88": "rhel_8", + "10.0.0.77": "debian_7", + "10.0.0.78": "debian_8", + "10.0.0.79": "debian_9", + "10.0.0.66": "oracle_6", + "10.0.0.67": "oracle_7", + "10.0.0.22": "ubuntu_12", + "10.0.0.23": "ubuntu_12_32", + "10.0.0.24": "ubuntu_14", + "10.0.0.29": "ubuntu_19", + "10.0.0.4": "windows_2003_r2_32", + "10.0.0.5": "windows_2003", + "10.0.0.8": "windows_2008", + "10.0.0.6": "windows_2008_32", + "10.0.0.7": "windows_2008_r2", + "10.0.0.12": "windows_2012", + "10.0.0.11": "windows_2012_r2", + "10.0.0.16": "windows_2016", + "10.0.0.19": "windows_2019", +} + + +@pytest.fixture(scope='class') +def island_client(island): + island_client_object = MonkeyIslandClient(island) + yield island_client_object + + +@pytest.mark.usefixtures('island_client') +# noinspection PyUnresolvedReferences +class TestOSCompatibility(object): + + def test_os_compat(self, island_client): + print() + all_monkeys = island_client.get_all_monkeys_from_db() + ips_that_communicated = [] + for monkey in all_monkeys: + for ip in monkey['ip_addresses']: + if ip in machine_list: + ips_that_communicated.append(ip) + break + for ip, os in machine_list.items(): + if ip not in ips_that_communicated: + print("{} didn't communicate to island".format(os)) + + if len(ips_that_communicated) < len(machine_list): + assert False + + + From d956f85cb5a9869cdebf17771dccc3c393483f92 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Thu, 19 Dec 2019 13:54:22 +0200 Subject: [PATCH 07/40] Added purpose tag, but not tested --- envs/os_compatibility/README.md | 4 ++-- envs/os_compatibility/terraform/instance_template/main.tf | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/envs/os_compatibility/README.md b/envs/os_compatibility/README.md index 9dd136ae7..43456c75e 100644 --- a/envs/os_compatibility/README.md +++ b/envs/os_compatibility/README.md @@ -28,8 +28,8 @@ terraform apply ``` ## Usage -1. Launch os_compat_ISLAND machine and upload your binaries/update island -2. Launch/Reboot all other os_compat test machines +1. Launch os_compat_ISLAND machine and upload your binaries/update island. Reset island environment. +2. Launch/Reboot all other os_compat test machines (Can be filtered with tag "Puropose: os_compat_instance") 3. Wait until machines boot and run monkey 4. Launch `test_compatibility.py` pytest script with island ip parameter (e.g. `test_compatibility.py --island 111.111.111.111:5000`) diff --git a/envs/os_compatibility/terraform/instance_template/main.tf b/envs/os_compatibility/terraform/instance_template/main.tf index 1709a4de1..5a4e08fa7 100644 --- a/envs/os_compatibility/terraform/instance_template/main.tf +++ b/envs/os_compatibility/terraform/instance_template/main.tf @@ -6,6 +6,7 @@ resource "aws_instance" "os_test_machine" { key_name = "os_compat" tags = { Name = "os_compat_${var.name}" + Purpose = "os_compat_instance" } vpc_security_group_ids = ["${data.aws_security_group.os_compat_instance.id}"] associate_public_ip_address = true From f46635ab6cf01c10eeb79e1bbd468f4c4f7c021a Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 10 Jan 2020 14:31:27 +0200 Subject: [PATCH 08/40] Added cpp file that creates a file (for testing) --- .../archeologist_bootloader/archeologist.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 monkey/infection_monkey/external_tools/archeologist_bootloader/archeologist.cpp diff --git a/monkey/infection_monkey/external_tools/archeologist_bootloader/archeologist.cpp b/monkey/infection_monkey/external_tools/archeologist_bootloader/archeologist.cpp new file mode 100644 index 000000000..195a1b4e5 --- /dev/null +++ b/monkey/infection_monkey/external_tools/archeologist_bootloader/archeologist.cpp @@ -0,0 +1,13 @@ +#include +#include + +using namespace std; + +void main() +{ + std::ofstream outfile ("C:/Windows/Temp/test.txt"); + + outfile << "my text here!" << std::endl; + + outfile.close(); +} From 65aff1df52860bcbabbe4584474cf0f9cd9322f4 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 10 Jan 2020 17:48:27 +0200 Subject: [PATCH 09/40] Fixed a bug that caused some machines not to launch the latest binary, removed unused ubuntu machine --- envs/os_compatibility/terraform/instances.tf | 2 ++ envs/os_compatibility/test_compatibility.py | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/envs/os_compatibility/terraform/instances.tf b/envs/os_compatibility/terraform/instances.tf index 3f5cc8658..781f0e636 100644 --- a/envs/os_compatibility/terraform/instances.tf +++ b/envs/os_compatibility/terraform/instances.tf @@ -47,6 +47,7 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash +rm ./monkey-linux-64 wget --no-check-certificate https://10.0.0.251:5000/api/monkey/download/monkey-linux-64 || curl https://10.0.0.251:5000/api/monkey/download/monkey-linux-64 -k -o monkey-linux-64 chmod +x ./monkey-linux-64 ./monkey-linux-64 m0nk3y -s 10.0.0.251:5000 @@ -73,6 +74,7 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash +rm ./monkey-linux-32 wget --no-check-certificate https://10.0.0.251:5000/api/monkey/download/monkey-linux-32 || curl https://10.0.0.251:5000/api/monkey/download/monkey-linux-32 -k -o monkey-linux-32 chmod +x ./monkey-linux-32 ./monkey-linux-32 m0nk3y -s 10.0.0.251:5000 diff --git a/envs/os_compatibility/test_compatibility.py b/envs/os_compatibility/test_compatibility.py index da46bc71c..218115c48 100644 --- a/envs/os_compatibility/test_compatibility.py +++ b/envs/os_compatibility/test_compatibility.py @@ -19,7 +19,6 @@ machine_list = { "10.0.0.66": "oracle_6", "10.0.0.67": "oracle_7", "10.0.0.22": "ubuntu_12", - "10.0.0.23": "ubuntu_12_32", "10.0.0.24": "ubuntu_14", "10.0.0.29": "ubuntu_19", "10.0.0.4": "windows_2003_r2_32", From 4e150ea92259356c167ca89212c1d229ebb613c7 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Tue, 14 Jan 2020 10:15:56 +0200 Subject: [PATCH 10/40] Added bootloader c file --- .../archeologist_bootloader/archeologist.cpp | 13 --- .../old_machine_bootloader.c | 80 +++++++++++++++++++ 2 files changed, 80 insertions(+), 13 deletions(-) delete mode 100644 monkey/infection_monkey/external_tools/archeologist_bootloader/archeologist.cpp create mode 100644 monkey/infection_monkey/external_tools/archeologist_bootloader/old_machine_bootloader.c diff --git a/monkey/infection_monkey/external_tools/archeologist_bootloader/archeologist.cpp b/monkey/infection_monkey/external_tools/archeologist_bootloader/archeologist.cpp deleted file mode 100644 index 195a1b4e5..000000000 --- a/monkey/infection_monkey/external_tools/archeologist_bootloader/archeologist.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include - -using namespace std; - -void main() -{ - std::ofstream outfile ("C:/Windows/Temp/test.txt"); - - outfile << "my text here!" << std::endl; - - outfile.close(); -} diff --git a/monkey/infection_monkey/external_tools/archeologist_bootloader/old_machine_bootloader.c b/monkey/infection_monkey/external_tools/archeologist_bootloader/old_machine_bootloader.c new file mode 100644 index 000000000..8f7a6ee98 --- /dev/null +++ b/monkey/infection_monkey/external_tools/archeologist_bootloader/old_machine_bootloader.c @@ -0,0 +1,80 @@ +#include /* printf, sprintf */ +#include /* exit */ +#include /* read, write, close */ +#include /* memcpy, memset */ +#include /* socket, connect */ +#include /* struct sockaddr_in, struct sockaddr */ +#include /* struct hostent, gethostbyname */ + +void error(const char *msg) { perror(msg); exit(0); } + +int main(int argc,char *argv[]) +{ + /* first what are we going to send and where are we going to send it? */ + int portno = 5000; + char *host = "api.somesite.com"; + char *message_fmt = "POST /apikey=%s&command=%s HTTP/1.0\r\n\r\n"; + + struct hostent *server; + struct sockaddr_in serv_addr; + int sockfd, bytes, sent, received, total; + char message[1024],response[4096]; + + /* fill in the parameters */ + sprintf(message,message_fmt,argv[1],argv[2]); + printf("Request:\n%s\n",message); + + /* create the socket */ + sockfd = socket(AF_INET, SOCK_STREAM, 0); + if (sockfd < 0) error("ERROR opening socket"); + + /* lookup the ip address */ + server = gethostbyname(host); + if (server == NULL) error("ERROR, no such host"); + + /* fill in the structure */ + memset(&serv_addr,0,sizeof(serv_addr)); + serv_addr.sin_family = AF_INET; + serv_addr.sin_port = htons(portno); + memcpy(&serv_addr.sin_addr.s_addr,server->h_addr,server->h_length); + + /* connect the socket */ + if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) + error("ERROR connecting"); + + /* send the request */ + total = strlen(message); + sent = 0; + do { + bytes = write(sockfd,message+sent,total-sent); + if (bytes < 0) + error("ERROR writing message to socket"); + if (bytes == 0) + break; + sent+=bytes; + } while (sent < total); + + /* receive the response */ + memset(response,0,sizeof(response)); + total = sizeof(response)-1; + received = 0; + do { + bytes = read(sockfd,response+received,total-received); + if (bytes < 0) + error("ERROR reading response from socket"); + if (bytes == 0) + break; + received+=bytes; + } while (received < total); + + if (received == total) + error("ERROR storing complete response from socket"); + + /* close the socket */ + close(sockfd); + + /* process response */ + printf("Response:\n%s\n",response); + + return 0; +} From c8618e91cdbf66c376d455ec72261ad0e2812659 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 17 Jan 2020 12:02:18 +0200 Subject: [PATCH 11/40] Added bootloader endpoint, fixed c code to be able to be included into pyinstaller --- .../old_machine_bootloader.c | 80 ------------- .../old_machine_bootloader.c | 107 ++++++++++++++++++ .../old_machine_bootloader.h | 9 ++ monkey/monkey_island/cc/app.py | 2 + .../monkey_island/cc/resources/bootloader.py | 39 +++++++ 5 files changed, 157 insertions(+), 80 deletions(-) delete mode 100644 monkey/infection_monkey/external_tools/archeologist_bootloader/old_machine_bootloader.c create mode 100644 monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c create mode 100644 monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.h create mode 100644 monkey/monkey_island/cc/resources/bootloader.py diff --git a/monkey/infection_monkey/external_tools/archeologist_bootloader/old_machine_bootloader.c b/monkey/infection_monkey/external_tools/archeologist_bootloader/old_machine_bootloader.c deleted file mode 100644 index 8f7a6ee98..000000000 --- a/monkey/infection_monkey/external_tools/archeologist_bootloader/old_machine_bootloader.c +++ /dev/null @@ -1,80 +0,0 @@ -#include /* printf, sprintf */ -#include /* exit */ -#include /* read, write, close */ -#include /* memcpy, memset */ -#include /* socket, connect */ -#include /* struct sockaddr_in, struct sockaddr */ -#include /* struct hostent, gethostbyname */ - -void error(const char *msg) { perror(msg); exit(0); } - -int main(int argc,char *argv[]) -{ - /* first what are we going to send and where are we going to send it? */ - int portno = 5000; - char *host = "api.somesite.com"; - char *message_fmt = "POST /apikey=%s&command=%s HTTP/1.0\r\n\r\n"; - - struct hostent *server; - struct sockaddr_in serv_addr; - int sockfd, bytes, sent, received, total; - char message[1024],response[4096]; - - /* fill in the parameters */ - sprintf(message,message_fmt,argv[1],argv[2]); - printf("Request:\n%s\n",message); - - /* create the socket */ - sockfd = socket(AF_INET, SOCK_STREAM, 0); - if (sockfd < 0) error("ERROR opening socket"); - - /* lookup the ip address */ - server = gethostbyname(host); - if (server == NULL) error("ERROR, no such host"); - - /* fill in the structure */ - memset(&serv_addr,0,sizeof(serv_addr)); - serv_addr.sin_family = AF_INET; - serv_addr.sin_port = htons(portno); - memcpy(&serv_addr.sin_addr.s_addr,server->h_addr,server->h_length); - - /* connect the socket */ - if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) - error("ERROR connecting"); - - /* send the request */ - total = strlen(message); - sent = 0; - do { - bytes = write(sockfd,message+sent,total-sent); - if (bytes < 0) - error("ERROR writing message to socket"); - if (bytes == 0) - break; - sent+=bytes; - } while (sent < total); - - /* receive the response */ - memset(response,0,sizeof(response)); - total = sizeof(response)-1; - received = 0; - do { - bytes = read(sockfd,response+received,total-received); - if (bytes < 0) - error("ERROR reading response from socket"); - if (bytes == 0) - break; - received+=bytes; - } while (received < total); - - if (received == total) - error("ERROR storing complete response from socket"); - - /* close the socket */ - close(sockfd); - - /* process response */ - printf("Response:\n%s\n",response); - - return 0; -} diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c b/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c new file mode 100644 index 000000000..e181b97ab --- /dev/null +++ b/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c @@ -0,0 +1,107 @@ +#include +#include +#include +#include + +#pragma comment( lib, "wininet" ) +#pragma comment (lib, "Wininet.lib") + +int ping_island(int argc, char * argv[]) +{ + DWORD dwVersion = 0; + DWORD dwMajorVersion = 0; + DWORD dwMinorVersion = 0; + DWORD dwBuild = 0; + + dwVersion = GetVersion(); + + // Get the Windows version. + + dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); + dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); + + // Get the build number. + + if (dwVersion < 0x80000000) + dwBuild = (DWORD)(HIWORD(dwVersion)); + + char versionStr[20]; + snprintf(versionStr, + 20, + "W%d.%d (%d)\n", + dwMajorVersion, + dwMinorVersion, + dwBuild); + + + wchar_t _server[] = L"158.129.18.132"; + wchar_t _page[] = L"/api/bootloader"; + HINTERNET hInternet, hConnect, hRequest; + DWORD bytes_read; + int finished = 0; + hInternet = InternetOpen("Mozilla/5.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); + if (hInternet == NULL) { + printf("InternetOpen error : <%lu>\n", GetLastError()); + return 1; + } + + hConnect = InternetConnect(hInternet, _server, 5000, "", "", INTERNET_SERVICE_HTTP, 0, 0); + if (hConnect == NULL) { + printf("hConnect error : <%lu>\n", GetLastError()); + return 1; + } + hRequest = HttpOpenRequest(hConnect, L"POST", _page, NULL, NULL, NULL, INTERNET_FLAG_SECURE, 0); + if (hRequest == NULL) { + printf("hRequest error : <%lu>\n", GetLastError()); + return 1; + } + + + DWORD dwFlags; + DWORD dwBuffLen = sizeof(dwFlags); + + if (InternetQueryOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, &dwBuffLen)) + { + dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA; + dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID; + InternetSetOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof (dwFlags)); + } + + BOOL isSend = HttpSendRequest(hRequest, NULL, 0, versionStr, 20); + if (!isSend){ + printf("HttpSendRequest error : (%lu)\n", GetLastError()); + return 1; + } + DWORD dwFileSize; + dwFileSize = BUFSIZ; + + char buffer[BUFSIZ+1]; + + while (1) { + DWORD dwBytesRead; + BOOL bRead; + + bRead = InternetReadFile( + hRequest, + buffer, + dwFileSize + 1, + &dwBytesRead); + + if (dwBytesRead == 0) break; + + if (!bRead) { + printf("InternetReadFile error : <%lu>\n", GetLastError()); + } + else { + buffer[dwBytesRead] = 0; + printf("Retrieved %lu data bytes: %s\n", dwBytesRead, buffer); + } + } + + // close request + InternetCloseHandle(hRequest); + InternetCloseHandle(hInternet); + InternetCloseHandle(hConnect); + + return 0; +} diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.h b/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.h new file mode 100644 index 000000000..8ccad4917 --- /dev/null +++ b/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.h @@ -0,0 +1,9 @@ +#include +#include +#include +#include + +#pragma comment( lib, "wininet" ) +#pragma comment (lib, "Wininet.lib") + +int ping_island(int argc, char * argv[]); diff --git a/monkey/monkey_island/cc/app.py b/monkey/monkey_island/cc/app.py index be2430dda..4698d6007 100644 --- a/monkey/monkey_island/cc/app.py +++ b/monkey/monkey_island/cc/app.py @@ -29,6 +29,7 @@ from monkey_island.cc.resources.version_update import VersionUpdate from monkey_island.cc.resources.pba_file_upload import FileUpload from monkey_island.cc.resources.attack.attack_config import AttackConfiguration from monkey_island.cc.resources.attack.attack_report import AttackReport +from monkey_island.cc.resources.bootloader import Bootloader from monkey_island.cc.services.database import Database from monkey_island.cc.services.remote_run_aws import RemoteRunAwsService from monkey_island.cc.services.representations import output_json @@ -86,6 +87,7 @@ def init_app_url_rules(app): def init_api_resources(api): api.add_resource(Root, '/api') api.add_resource(Monkey, '/api/monkey', '/api/monkey/', '/api/monkey/') + api.add_resource(Bootloader, '/api/bootloader') api.add_resource(LocalRun, '/api/local-monkey', '/api/local-monkey/') api.add_resource(ClientRun, '/api/client-monkey', '/api/client-monkey/') api.add_resource(Telemetry, '/api/telemetry', '/api/telemetry/', '/api/telemetry/') diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py new file mode 100644 index 000000000..78b6f8015 --- /dev/null +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -0,0 +1,39 @@ +import json +from datetime import datetime +import dateutil.parser +import flask_restful +from flask import request + +from monkey_island.cc.consts import DEFAULT_MONKEY_TTL_EXPIRY_DURATION_IN_SECONDS +from monkey_island.cc.database import mongo +from monkey_island.cc.models.monkey_ttl import create_monkey_ttl_document +from monkey_island.cc.services.config import ConfigService +from monkey_island.cc.services.node import NodeService + +WINDOWS_VERSIONS = { + "5.0" : "Windows 2000", + "5.1" : "Windows XP", + "5.2" : "Windows XP/server 2003", + "6.0" : "Windows Vista/server 2008", + "6.1" : "Windows 7/server 2008R2", + "6.2" : "Windows 8/server 2012", + "6.3" : "Windows 8.1/server 2012R2", + "10.0" : "Windows 10/server 2016-2019" +} + + +class Bootloader(flask_restful.Resource): + + # Used by monkey. can't secure. + def post(self, **kw): + os_version = request.data.decode().split(" ") + if (os_version[0] == "W"): + os_type = "windows" + os_version = os_version[1:] + + + return {"id": "Abc"} + + def get(self, guid=None, **kw): + NodeService.update_dead_monkeys() + return {} From 02fafae8716fbca54d0b1fb95e42137744d72629 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 20 Jan 2020 12:32:27 +0200 Subject: [PATCH 12/40] Updated docs and instance info in terraform. Some bugfixes. --- envs/monkey_maker/README.md | 29 ++++++++++++++++++++ envs/monkey_maker/terraform/instances.tf | 6 ++-- envs/os_compatibility/README.md | 22 +++++++++++++++ envs/os_compatibility/terraform/instances.tf | 28 +++++++------------ envs/os_compatibility/test_compatibility.py | 5 ++-- 5 files changed, 66 insertions(+), 24 deletions(-) diff --git a/envs/monkey_maker/README.md b/envs/monkey_maker/README.md index 275ab6bbf..c273b6b04 100644 --- a/envs/monkey_maker/README.md +++ b/envs/monkey_maker/README.md @@ -26,3 +26,32 @@ terraform init terraform apply ``` +### Usage + +To login to windows use Administrator: %HwuzI!Uzsyfa=cB*XaQ6xxHqopfj)h) credentials + +You'll find docker files in `/home/ubuntu/docker_envs/linux/...` + +To build docker image for 32 bit linux: +``` +cd /home/ubuntu/docker_envs/linux/py3-32 +sudo docker build -t builder32 . +``` + +To build docker image for 64 bit linux: +``` +cd /home/ubuntu/docker_envs/linux/py3-64 +sudo docker build -t builder64 . +``` + +To build 32 bit monkey binary: +``` +cd /home/ubuntu/monkey_folder/monkey +sudo docker run -v "$(pwd):/src" builder32 -c "export SRCDIR=/src/infection_monkey && /entrypoint.sh" +``` + +To build 64 bit monkey binary: +``` +cd /home/ubuntu/monkey_folder/monkey +sudo docker run -v "$(pwd):/src" builder64 -c "export SRCDIR=/src/infection_monkey && /entrypoint.sh" +``` diff --git a/envs/monkey_maker/terraform/instances.tf b/envs/monkey_maker/terraform/instances.tf index 495b2ca64..e7ba1877e 100644 --- a/envs/monkey_maker/terraform/instances.tf +++ b/envs/monkey_maker/terraform/instances.tf @@ -11,14 +11,14 @@ resource "aws_instance" "island_windows" { associate_public_ip_address = true } -resource "aws_instance" "island_linux_64" { - ami = "ami-050a22b7e0cf85dd0" +resource "aws_instance" "island_linux" { + ami = "ami-0495203541087740a" instance_type = "t2.micro" private_ip = "10.0.0.252" subnet_id = "${aws_subnet.main.id}" key_name = "monkey_maker" tags = { - Name = "monkey_maker_linux_64" + Name = "monkey_maker_linux" } vpc_security_group_ids = ["${aws_security_group.monkey_maker_sg.id}"] associate_public_ip_address = true diff --git a/envs/os_compatibility/README.md b/envs/os_compatibility/README.md index 43456c75e..0e2043bf5 100644 --- a/envs/os_compatibility/README.md +++ b/envs/os_compatibility/README.md @@ -28,8 +28,30 @@ terraform apply ``` ## Usage + 1. Launch os_compat_ISLAND machine and upload your binaries/update island. Reset island environment. 2. Launch/Reboot all other os_compat test machines (Can be filtered with tag "Puropose: os_compat_instance") 3. Wait until machines boot and run monkey 4. Launch `test_compatibility.py` pytest script with island ip parameter (e.g. `test_compatibility.py --island 111.111.111.111:5000`) + +## Machines + +Since island machine is built from custom AMI it already has the following credentials: + +Administrator: %tPHGz8ZuQsBnEUgdpz!6f&elGnFy?;. + +The following machines does not download monkey automatically, so you'll have to manually check them: + +- os_compat_kali_2019 +- os_compat_oracle_6 +- os_compat_oracle_7 +- windows_2003_r2_32 +- windows_2003 + +A quick reference for usernames on different machines (if in doubt check official docs): +- Ubuntu: ubuntu +- Oracle: clckwrk +- CentOS: centos +- Everything else: ec2-user + diff --git a/envs/os_compatibility/terraform/instances.tf b/envs/os_compatibility/terraform/instances.tf index 781f0e636..e20c60000 100644 --- a/envs/os_compatibility/terraform/instances.tf +++ b/envs/os_compatibility/terraform/instances.tf @@ -3,7 +3,7 @@ resource "aws_instance" "island" { - ami = "ami-01cc9554aa0b4c00e" + ami = "ami-004f0217ce761fc9a" instance_type = "t2.micro" private_ip = "10.0.0.251" subnet_id = "${aws_subnet.main.id}" @@ -18,7 +18,6 @@ resource "aws_instance" "island" { volume_type = "standard" delete_on_termination = true } - #associate_public_ip_address = false } locals { @@ -48,7 +47,7 @@ Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash rm ./monkey-linux-64 -wget --no-check-certificate https://10.0.0.251:5000/api/monkey/download/monkey-linux-64 || curl https://10.0.0.251:5000/api/monkey/download/monkey-linux-64 -k -o monkey-linux-64 +wget --no-check-certificate -q https://10.0.0.251:5000/api/monkey/download/monkey-linux-64 -O ./monkey-linux-64 || curl https://10.0.0.251:5000/api/monkey/download/monkey-linux-64 -k -o monkey-linux-64 chmod +x ./monkey-linux-64 ./monkey-linux-64 m0nk3y -s 10.0.0.251:5000 --// @@ -75,7 +74,7 @@ Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash rm ./monkey-linux-32 -wget --no-check-certificate https://10.0.0.251:5000/api/monkey/download/monkey-linux-32 || curl https://10.0.0.251:5000/api/monkey/download/monkey-linux-32 -k -o monkey-linux-32 +wget --no-check-certificate -q https://10.0.0.251:5000/api/monkey/download/monkey-linux-32 -O ./monkey-linux-32 || curl https://10.0.0.251:5000/api/monkey/download/monkey-linux-32 -k -o monkey-linux-32 chmod +x ./monkey-linux-32 ./monkey-linux-32 m0nk3y -s 10.0.0.251:5000 --// @@ -177,7 +176,8 @@ module "kali_2019" { env_vars = "${local.env_vars}" user_data = "${local.user_data_linux_64}" } -// Requires m3.medium + +// Requires m3.medium which usually isn't available //module "rhel_5" { // source = "./instance_template" // name = "rhel_5" @@ -269,7 +269,7 @@ module "ubuntu_12" { user_data = "${local.user_data_linux_64}" } -// Requires m3.medium instance +// Requires m3.medium instance which usually isn't available // module "ubuntu_12_32" { // source = "./instance_template" // name = "ubuntu_12_32" @@ -324,24 +324,16 @@ module "windows_2008" { user_data = "${local.user_data_windows_64}" } + module "windows_2008_32" { source = "./instance_template" name = "windows_2008_32" - ami = "ami-0acaec54bac5cbb8f" + ami = "ami-3606352b" ip = "10.0.0.6" env_vars = "${local.env_vars}" user_data = "${local.user_data_windows_32}" } -module "windows_2008_r2" { - source = "./instance_template" - name = "windows_2008_r2" - ami = "ami-0252def122d07efd3" - ip = "10.0.0.7" - env_vars = "${local.env_vars}" - user_data = "${local.user_data_windows_64}" -} - module "windows_2012" { source = "./instance_template" name = "windows_2012" @@ -364,7 +356,7 @@ module "windows_2016" { source = "./instance_template" name = "windows_2016" ami = "ami-02a6791b44938cfcd" - ip = "10.0.0.16" + ip = "10.0.0.116" env_vars = "${local.env_vars}" user_data = "${local.user_data_windows_64}" } @@ -373,7 +365,7 @@ module "windows_2019" { source = "./instance_template" name = "windows_2019" ami = "ami-09fe2745618d2af42" - ip = "10.0.0.19" + ip = "10.0.0.119" env_vars = "${local.env_vars}" user_data = "${local.user_data_windows_64}" } diff --git a/envs/os_compatibility/test_compatibility.py b/envs/os_compatibility/test_compatibility.py index 218115c48..51a9f5ebb 100644 --- a/envs/os_compatibility/test_compatibility.py +++ b/envs/os_compatibility/test_compatibility.py @@ -25,11 +25,10 @@ machine_list = { "10.0.0.5": "windows_2003", "10.0.0.8": "windows_2008", "10.0.0.6": "windows_2008_32", - "10.0.0.7": "windows_2008_r2", "10.0.0.12": "windows_2012", "10.0.0.11": "windows_2012_r2", - "10.0.0.16": "windows_2016", - "10.0.0.19": "windows_2019", + "10.0.0.116": "windows_2016", + "10.0.0.119": "windows_2019", } From 978918e5dd8fcaa2a76cf807e5fbe15219f9a3ed Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 20 Jan 2020 16:37:53 +0200 Subject: [PATCH 13/40] Updated AMI of windows maker, updated windows_2008_r2 ami --- envs/monkey_maker/terraform/instances.tf | 2 +- envs/os_compatibility/terraform/instances.tf | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/envs/monkey_maker/terraform/instances.tf b/envs/monkey_maker/terraform/instances.tf index e7ba1877e..b46f04910 100644 --- a/envs/monkey_maker/terraform/instances.tf +++ b/envs/monkey_maker/terraform/instances.tf @@ -1,5 +1,5 @@ resource "aws_instance" "island_windows" { - ami = "ami-086f705bf43f47ae7" + ami = "ami-033b3ef27f8d1881d" instance_type = "t2.micro" private_ip = "10.0.0.251" subnet_id = "${aws_subnet.main.id}" diff --git a/envs/os_compatibility/terraform/instances.tf b/envs/os_compatibility/terraform/instances.tf index e20c60000..d440b6f77 100644 --- a/envs/os_compatibility/terraform/instances.tf +++ b/envs/os_compatibility/terraform/instances.tf @@ -315,10 +315,10 @@ module "windows_2003" { user_data = "${local.user_data_windows_64}" } -module "windows_2008" { +module "windows_2008_r2" { source = "./instance_template" - name = "windows_2008" - ami = "ami-0d8c60e4d3ca36ed6" + name = "windows_2008_r2" + ami = "ami-b63c0aab" ip = "10.0.0.8" env_vars = "${local.env_vars}" user_data = "${local.user_data_windows_64}" From d9fbc126018cb55db509e9cedab02a22285011b9 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 20 Jan 2020 17:47:49 +0200 Subject: [PATCH 14/40] Updated with 2008 r2 that can run the monkey --- envs/os_compatibility/README.md | 3 +++ envs/os_compatibility/terraform/instances.tf | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/envs/os_compatibility/README.md b/envs/os_compatibility/README.md index 0e2043bf5..d8e1d30f9 100644 --- a/envs/os_compatibility/README.md +++ b/envs/os_compatibility/README.md @@ -41,6 +41,8 @@ Since island machine is built from custom AMI it already has the following crede Administrator: %tPHGz8ZuQsBnEUgdpz!6f&elGnFy?;. +For windows_2008_r2 Administrator:AGE(MP..txL + The following machines does not download monkey automatically, so you'll have to manually check them: - os_compat_kali_2019 @@ -48,6 +50,7 @@ The following machines does not download monkey automatically, so you'll have to - os_compat_oracle_7 - windows_2003_r2_32 - windows_2003 +- windows_2008_r2 A quick reference for usernames on different machines (if in doubt check official docs): - Ubuntu: ubuntu diff --git a/envs/os_compatibility/terraform/instances.tf b/envs/os_compatibility/terraform/instances.tf index d440b6f77..07bb81933 100644 --- a/envs/os_compatibility/terraform/instances.tf +++ b/envs/os_compatibility/terraform/instances.tf @@ -318,7 +318,7 @@ module "windows_2003" { module "windows_2008_r2" { source = "./instance_template" name = "windows_2008_r2" - ami = "ami-b63c0aab" + ami = "ami-05af5509c2c73e36e" ip = "10.0.0.8" env_vars = "${local.env_vars}" user_data = "${local.user_data_windows_64}" From d349f2628cfc82d73f8239c398cc15048bf5b55c Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 27 Jan 2020 17:44:18 +0200 Subject: [PATCH 15/40] Code changes that loosely implement the prototype of bootloader, but there still is a timeout --- monkey/infection_monkey/monkey.py | 4 ++ monkey/infection_monkey/transport/http.py | 15 +++++++ monkey/infection_monkey/tunnel.py | 5 ++- monkey/monkey_island/cc/bootloader_server.py | 41 +++++++++++++++++++ monkey/monkey_island/cc/main.py | 16 ++++++++ .../monkey_island/cc/resources/bootloader.py | 34 +++++---------- 6 files changed, 91 insertions(+), 24 deletions(-) create mode 100644 monkey/monkey_island/cc/bootloader_server.py diff --git a/monkey/infection_monkey/monkey.py b/monkey/infection_monkey/monkey.py index 80d2d8642..2e6470cc0 100644 --- a/monkey/infection_monkey/monkey.py +++ b/monkey/infection_monkey/monkey.py @@ -216,6 +216,10 @@ class InfectionMonkey(object): # if host was exploited, before continue to closing the tunnel ensure the exploited host had its chance to # connect to the tunnel + + #TODO change back + time.sleep(WormConfiguration.keep_tunnel_open_time) + if len(self._exploited_machines) > 0: time_to_sleep = WormConfiguration.keep_tunnel_open_time LOG.info("Sleeping %d seconds for exploited machines to connect to tunnel", time_to_sleep) diff --git a/monkey/infection_monkey/transport/http.py b/monkey/infection_monkey/transport/http.py index ae7a6934c..a3cf6b2b6 100644 --- a/monkey/infection_monkey/transport/http.py +++ b/monkey/infection_monkey/transport/http.py @@ -7,6 +7,8 @@ import urllib from logging import getLogger from urllib.parse import urlsplit +import requests + import infection_monkey.monkeyfs as monkeyfs from infection_monkey.transport.base import TransportProxyBase, update_last_serve_time from infection_monkey.network.tools import get_interface_to_target @@ -110,6 +112,19 @@ class HTTPConnectProxyHandler(http.server.BaseHTTPRequestHandler): proxy_via = None # pseudonym of the proxy in Via header, set to None not to modify original Via header protocol_version = "HTTP/1.1" + def do_POST(self): + content_length = int(self.headers['Content-Length']) # <--- Gets the size of data + post_data = self.rfile.read(content_length).decode() # <--- Gets the data itself + r = requests.post(url=self.path, data=post_data) + if (r.status_code != 200): + # somehow forward post request to the next proxy + r = requests.post(url=self.path, data=post_data, proxy=self.path) + if (r.status_code != 200): + return self.send_response(404) + self.send_response(200) + self.end_headers() + self.wfile.write(r.content) + def version_string(self): return "" diff --git a/monkey/infection_monkey/tunnel.py b/monkey/infection_monkey/tunnel.py index 3544f46f3..3a7d23256 100644 --- a/monkey/infection_monkey/tunnel.py +++ b/monkey/infection_monkey/tunnel.py @@ -126,7 +126,10 @@ class MonkeyTunnel(Thread): def run(self): self._broad_sock = _set_multicast_socket(self._timeout) self.l_ips = local_ips() - self.local_port = get_free_tcp_port() + + #TODO change back + self.local_port = 5002 + #self.local_port = get_free_tcp_port() if not self.local_port: return diff --git a/monkey/monkey_island/cc/bootloader_server.py b/monkey/monkey_island/cc/bootloader_server.py new file mode 100644 index 000000000..1638c6316 --- /dev/null +++ b/monkey/monkey_island/cc/bootloader_server.py @@ -0,0 +1,41 @@ +from http.server import HTTPServer, BaseHTTPRequestHandler +from urllib import parse +import urllib3 + +import requests +import pymongo + +# Disable "unverified certificate" warnings when sending requests to island +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + + +class BootloaderHttpServer(HTTPServer): + + def __init__(self, mongo_url): + self.mongo_client = pymongo.MongoClient(mongo_url) + server_address = ('', 5001) + super().__init__(server_address, BootloaderHTTPRequestHandler) + + +class BootloaderHTTPRequestHandler(BaseHTTPRequestHandler): + + def do_POST(self): + content_length = int(self.headers['Content-Length']) + post_data = self.rfile.read(content_length).decode() + conf = self.server.mongo_client['monkeyisland']['config'].find_one({'name': 'newconfig'}) + if not conf: + conf = self.server.mongo_client['monkeyisland']['config'].find_one({'name': 'initial'}) + island_server_path = BootloaderHTTPRequestHandler.get_bootloader_resource_path_from_config(conf) + r = requests.post(url=island_server_path, data=post_data, verify=False) + if r.status_code != 200: + self.send_response(404) + else: + self.send_response(200) + self.end_headers() + self.wfile.write(r.content) + self.connection.close() + + @staticmethod + def get_bootloader_resource_path_from_config(config): + address = config['cnc']['servers']['current_server'] + return parse.urljoin("https://"+address, "api/bootloader") diff --git a/monkey/monkey_island/cc/main.py b/monkey/monkey_island/cc/main.py index 17c537aeb..31e227ff1 100644 --- a/monkey/monkey_island/cc/main.py +++ b/monkey/monkey_island/cc/main.py @@ -3,6 +3,7 @@ import os.path import sys import time import logging +from threading import Thread MINIMUM_MONGO_DB_VERSION_REQUIRED = "3.6.0" @@ -25,9 +26,24 @@ from monkey_island.cc.utils import local_ip_addresses from monkey_island.cc.environment.environment import env from monkey_island.cc.database import is_db_server_up, get_db_version from monkey_island.cc.resources.monkey_download import MonkeyDownload +from monkey_island.cc.bootloader_server import BootloaderHttpServer def main(): + + logger.info("Starting bootloader server") + mongo_url = os.environ.get('MONGO_URL', env.get_mongo_url()) + bootloader_server_thread = Thread(target=BootloaderHttpServer(mongo_url).serve_forever, daemon=True) + # island_server_thread = Thread(target=start_island_server) + + bootloader_server_thread.start() + #island_server_thread.start() + start_island_server() + bootloader_server_thread.join() + #island_server_thread.join() + + +def start_island_server(): from tornado.wsgi import WSGIContainer from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index 78b6f8015..672f7033f 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -1,24 +1,17 @@ -import json -from datetime import datetime -import dateutil.parser import flask_restful -from flask import request +from flask import request, make_response -from monkey_island.cc.consts import DEFAULT_MONKEY_TTL_EXPIRY_DURATION_IN_SECONDS -from monkey_island.cc.database import mongo -from monkey_island.cc.models.monkey_ttl import create_monkey_ttl_document -from monkey_island.cc.services.config import ConfigService from monkey_island.cc.services.node import NodeService WINDOWS_VERSIONS = { - "5.0" : "Windows 2000", - "5.1" : "Windows XP", - "5.2" : "Windows XP/server 2003", - "6.0" : "Windows Vista/server 2008", - "6.1" : "Windows 7/server 2008R2", - "6.2" : "Windows 8/server 2012", - "6.3" : "Windows 8.1/server 2012R2", - "10.0" : "Windows 10/server 2016-2019" + "5.0": "Windows 2000", + "5.1": "Windows XP", + "5.2": "Windows XP/server 2003", + "6.0": "Windows Vista/server 2008", + "6.1": "Windows 7/server 2008R2", + "6.2": "Windows 8/server 2012", + "6.3": "Windows 8.1/server 2012R2", + "10.0": "Windows 10/server 2016-2019" } @@ -27,13 +20,8 @@ class Bootloader(flask_restful.Resource): # Used by monkey. can't secure. def post(self, **kw): os_version = request.data.decode().split(" ") - if (os_version[0] == "W"): + if (os_version[0][0] == "W"): os_type = "windows" os_version = os_version[1:] - - return {"id": "Abc"} - - def get(self, guid=None, **kw): - NodeService.update_dead_monkeys() - return {} + return make_response({"status": "OK"}, 200) From 04c09b50d2fee5d4648d40b6c2b738f8290ad62e Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Tue, 28 Jan 2020 19:04:30 +0200 Subject: [PATCH 16/40] Small style improvement, disabled explicit http 1.1 --- monkey/infection_monkey/transport/http.py | 2 +- monkey/monkey_island/cc/resources/bootloader.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/monkey/infection_monkey/transport/http.py b/monkey/infection_monkey/transport/http.py index a3cf6b2b6..8745e62eb 100644 --- a/monkey/infection_monkey/transport/http.py +++ b/monkey/infection_monkey/transport/http.py @@ -110,7 +110,7 @@ class FileServHTTPRequestHandler(http.server.BaseHTTPRequestHandler): class HTTPConnectProxyHandler(http.server.BaseHTTPRequestHandler): timeout = 30 # timeout with clients, set to None not to make persistent connection proxy_via = None # pseudonym of the proxy in Via header, set to None not to modify original Via header - protocol_version = "HTTP/1.1" + #protocol_version = "HTTP/1.1" def do_POST(self): content_length = int(self.headers['Content-Length']) # <--- Gets the size of data diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index 672f7033f..80a7b56d7 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -1,8 +1,6 @@ import flask_restful from flask import request, make_response -from monkey_island.cc.services.node import NodeService - WINDOWS_VERSIONS = { "5.0": "Windows 2000", "5.1": "Windows XP", From aed7e3f9900f81c1ecdbf886a6c7251bb3e14165 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 29 Jan 2020 15:04:27 +0200 Subject: [PATCH 17/40] updated windows old machine bootloader code to use tunnel, quit if os to old and more --- .../old_machine_bootloader.c | 138 +++++++++--- .../old_machine_bootloader/pyi_main.c | 213 ++++++++++++++++++ 2 files changed, 323 insertions(+), 28 deletions(-) create mode 100644 monkey/infection_monkey/external_tools/old_machine_bootloader/pyi_main.c diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c b/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c index e181b97ab..d62ad1796 100644 --- a/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c +++ b/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c @@ -2,12 +2,53 @@ #include #include #include +#include -#pragma comment( lib, "wininet" ) -#pragma comment (lib, "Wininet.lib") +#pragma comment ( lib, "wininet" ) +#pragma comment ( lib, "Wininet.lib" ) + +#define minVersion 6.1 + +// Replaces a single occurrence of substring +wchar_t* replaceSubstringOnce(wchar_t* str, wchar_t* to_be_replaced, wchar_t* replacement) { + size_t str_size = wcslen(str); + size_t to_be_replaced_size = wcslen(to_be_replaced); + size_t replacement_size = wcslen(replacement); + size_t result_size = str_size - to_be_replaced_size + replacement_size; + wchar_t *result_string = (wchar_t*)malloc(sizeof(wchar_t) * (result_size)); + + for (int i = 0; i < (int)result_size; i++ ){ + result_string[i] = str[i]; + if(str[i] == to_be_replaced[0] && replacement_size != 0){ + BOOL should_replace = TRUE; + // Check if started iterating over string that will be replaced + for (int j = i; j < (i + to_be_replaced_size); j++){ + if(str[j] != to_be_replaced[j - i]) { + should_replace = FALSE; + } + } + // If string that needs to be replaced is found - replace it + if (should_replace) { + for (int j = i; j < (i + replacement_size); j++){ + result_string[j] = replacement[j - i]; + } + i += to_be_replaced_size; + } + } + } + result_string[result_size] = '\0'; + return result_string; +} + +struct versionInfo { + DWORD MajorVersion; + DWORD MinorVersion; + DWORD Build; + wchar_t* versionStr; +}; + +struct versionInfo getWindowsVersion(int size){ -int ping_island(int argc, char * argv[]) -{ DWORD dwVersion = 0; DWORD dwMajorVersion = 0; DWORD dwMinorVersion = 0; @@ -16,58 +57,54 @@ int ping_island(int argc, char * argv[]) dwVersion = GetVersion(); // Get the Windows version. - dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); // Get the build number. - if (dwVersion < 0x80000000) dwBuild = (DWORD)(HIWORD(dwVersion)); - char versionStr[20]; + wchar_t* versionStr = (wchar_t*)malloc(sizeof(wchar_t) * (size)); snprintf(versionStr, - 20, + size, "W%d.%d (%d)\n", dwMajorVersion, dwMinorVersion, dwBuild); + struct versionInfo winVersionInfo = {dwMajorVersion, dwMinorVersion, dwBuild, versionStr}; + return winVersionInfo; +} +int sendRequest(wchar_t* server, wchar_t* tunnel, BOOL tunnelUsed, wchar_t* windowsVersion){ - wchar_t _server[] = L"158.129.18.132"; - wchar_t _page[] = L"/api/bootloader"; + wchar_t _page[] = L"/"; HINTERNET hInternet, hConnect, hRequest; DWORD bytes_read; int finished = 0; - hInternet = InternetOpen("Mozilla/5.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); + if (tunnelUsed){ + hInternet = InternetOpen("Mozilla/5.0", INTERNET_OPEN_TYPE_PROXY, tunnel, NULL, 0); + } else { + hInternet = InternetOpen("Mozilla/5.0", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); + } + if (hInternet == NULL) { printf("InternetOpen error : <%lu>\n", GetLastError()); return 1; } - hConnect = InternetConnect(hInternet, _server, 5000, "", "", INTERNET_SERVICE_HTTP, 0, 0); + hConnect = InternetConnect(hInternet, server, 5001, "", "", INTERNET_SERVICE_HTTP, 0, 0); if (hConnect == NULL) { printf("hConnect error : <%lu>\n", GetLastError()); return 1; } - hRequest = HttpOpenRequest(hConnect, L"POST", _page, NULL, NULL, NULL, INTERNET_FLAG_SECURE, 0); + + hRequest = HttpOpenRequest(hConnect, L"POST", _page, NULL, NULL, NULL, NULL, 0); if (hRequest == NULL) { printf("hRequest error : <%lu>\n", GetLastError()); return 1; } - - DWORD dwFlags; - DWORD dwBuffLen = sizeof(dwFlags); - - if (InternetQueryOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, &dwBuffLen)) - { - dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA; - dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID; - InternetSetOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof (dwFlags)); - } - - BOOL isSend = HttpSendRequest(hRequest, NULL, 0, versionStr, 20); + BOOL isSend = HttpSendRequest(hRequest, NULL, 0, windowsVersion, sizeof(windowsVersion)); if (!isSend){ printf("HttpSendRequest error : (%lu)\n", GetLastError()); return 1; @@ -97,11 +134,56 @@ int ping_island(int argc, char * argv[]) printf("Retrieved %lu data bytes: %s\n", dwBytesRead, buffer); } } - // close request InternetCloseHandle(hRequest); - InternetCloseHandle(hInternet); InternetCloseHandle(hConnect); + InternetCloseHandle(hInternet); + + return strcmp(buffer, "{\"status\":\"OK\"}\n"); - return 0; +} + + +int ping_island(int argc, char * argv[]) +{ + + struct versionInfo windowsVersion = getWindowsVersion(20); + + // Find which argument is tunnel flag + int i, tunnel_i=0, server_i=0; + char t_flag[] = "-t"; + char s_flag[] = "-s"; + for(i=1;i minVersion) { + return 0; + } else { + return 1; + } } diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/pyi_main.c b/monkey/infection_monkey/external_tools/old_machine_bootloader/pyi_main.c new file mode 100644 index 000000000..4dbbe2062 --- /dev/null +++ b/monkey/infection_monkey/external_tools/old_machine_bootloader/pyi_main.c @@ -0,0 +1,213 @@ +/* + * **************************************************************************** + * Copyright (c) 2013-2020, PyInstaller Development Team. + * + * Distributed under the terms of the GNU General Public License (version 2 + * or later) with exception for distributing the bootloader. + * + * The full license is in the file COPYING.txt, distributed with this software. + * + * SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception) + * **************************************************************************** + */ + +/* + * Bootloader for a packed executable. + */ + +/* TODO: use safe string functions */ +#define _CRT_SECURE_NO_WARNINGS 1 + +#ifdef _WIN32 + #include + #include +#else + #include /* PATH_MAX */ +#endif +#include /* FILE */ +#include /* calloc */ +#include /* memset */ + +/* PyInstaller headers. */ +#include "pyi_global.h" /* PATH_MAX for win32 */ +#include "pyi_path.h" +#include "pyi_archive.h" +#include "pyi_utils.h" +#include "pyi_pythonlib.h" +#include "pyi_launch.h" +#include "pyi_win32_utils.h" + +#include "old_machine_bootloader.h" + +#include + + + +#include +#include +#include + +#pragma comment( lib, "wininet" ) +#pragma comment (lib, "Wininet.lib") + + +int +pyi_main(int argc, char * argv[]) +{ + /* archive_status contain status information of the main process. */ + ARCHIVE_STATUS *archive_status = NULL; + char executable[PATH_MAX]; + char homepath[PATH_MAX]; + char archivefile[PATH_MAX]; + int rc = 0; + char *extractionpath = NULL; + wchar_t * dllpath_w; + + int too_old = ping_island(argc, argv); + if (too_old){ + printf("OS too old, quiting."); + return 0; + } + + +#ifdef _MSC_VER + /* Visual C runtime incorrectly buffers stderr */ + setbuf(stderr, (char *)NULL); +#endif /* _MSC_VER */ + + VS("PyInstaller Bootloader 3.x\n"); + + /* TODO create special function to allocate memory for archive status pyi_arch_status_alloc_memory(archive_status); */ + archive_status = (ARCHIVE_STATUS *) calloc(1, sizeof(ARCHIVE_STATUS)); + + if (archive_status == NULL) { + FATAL_PERROR("calloc", "Cannot allocate memory for ARCHIVE_STATUS\n"); + return -1; + + } + + pyi_path_executable(executable, argv[0]); + pyi_path_archivefile(archivefile, executable); + pyi_path_homepath(homepath, executable); + + /* For the curious: + * On Windows, the UTF-8 form of MEIPASS2 is passed to pyi_setenv, which + * decodes to UTF-16 before passing it to the Windows API. So the var's value + * is full unicode. + * + * On OS X/Linux, the MEIPASS2 value is passed as the bytes received from the OS. + * Only Python will care about its encoding, and it is passed to Python using + * PyUnicode_DecodeFSDefault. + */ + + extractionpath = pyi_getenv("_MEIPASS2"); + + /* If the Python program we are about to run invokes another PyInstaller + * one-file program as subprocess, this subprocess must not be fooled into + * thinking that it is already unpacked. Therefore, PyInstaller deletes + * the _MEIPASS2 variable from the environment. + */ + + pyi_unsetenv("_MEIPASS2"); + + VS("LOADER: _MEIPASS2 is %s\n", (extractionpath ? extractionpath : "NULL")); + + if (pyi_arch_setup(archive_status, homepath, &executable[strlen(homepath)])) { + if (pyi_arch_setup(archive_status, homepath, &archivefile[strlen(homepath)])) { + FATALERROR("Cannot open self %s or archive %s\n", + executable, archivefile); + return -1; + } + } + + /* These are used only in pyi_pylib_set_sys_argv, which converts to wchar_t */ + archive_status->argc = argc; + archive_status->argv = argv; + +#if defined(_WIN32) || defined(__APPLE__) + + /* On Windows and Mac use single-process for --onedir mode. */ + if (!extractionpath && !pyi_launch_need_to_extract_binaries(archive_status)) { + VS("LOADER: No need to extract files to run; setting extractionpath to homepath\n"); + extractionpath = homepath; + } + +#endif + +#ifdef _WIN32 + + if (extractionpath) { + /* Add extraction folder to DLL search path */ + dllpath_w = pyi_win32_utils_from_utf8(NULL, extractionpath, 0); + SetDllDirectory(dllpath_w); + VS("LOADER: SetDllDirectory(%s)\n", extractionpath); + free(dllpath_w); + } +#endif /* ifdef _WIN32 */ + + if (extractionpath) { + VS("LOADER: Already in the child - running user's code.\n"); + + /* If binaries were extracted to temppath, + * we pass it through status variable + */ + if (strcmp(homepath, extractionpath) != 0) { + strncpy(archive_status->temppath, extractionpath, PATH_MAX); + if (archive_status->temppath[PATH_MAX-1] != '\0') { + VS("LOADER: temppath exceeds PATH_MAX\n"); + return -1; + } + /* + * Temp path exits - set appropriate flag and change + * status->mainpath to point to temppath. + */ + archive_status->has_temp_directory = true; + strcpy(archive_status->mainpath, archive_status->temppath); + } + + /* Main code to initialize Python and run user's code. */ + pyi_launch_initialize(archive_status); + rc = pyi_launch_execute(archive_status); + pyi_launch_finalize(archive_status); + + } + else { + + /* status->temppath is created if necessary. */ + if (pyi_launch_extract_binaries(archive_status)) { + VS("LOADER: temppath is %s\n", archive_status->temppath); + VS("LOADER: Error extracting binaries\n"); + return -1; + } + + /* Run the 'child' process, then clean up. */ + + VS("LOADER: Executing self as child\n"); + pyi_setenv("_MEIPASS2", + archive_status->temppath[0] != + 0 ? archive_status->temppath : homepath); + + VS("LOADER: set _MEIPASS2 to %s\n", pyi_getenv("_MEIPASS2")); + + if (pyi_utils_set_environment(archive_status) == -1) { + return -1; + } + + /* Transform parent to background process on OSX only. */ + pyi_parent_to_background(); + + /* Run user's code in a subprocess and pass command line arguments to it. */ + rc = pyi_utils_create_child(executable, archive_status, argc, argv); + + VS("LOADER: Back to parent (RC: %d)\n", rc); + + VS("LOADER: Doing cleanup\n"); + + if (archive_status->has_temp_directory == true) { + pyi_remove_temp_path(archive_status->temppath); + } + pyi_arch_status_free_memory(archive_status); + + } + return rc; +} From 0c157986b72f0b4726d48b28c4336909b4d3b6ad Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 31 Jan 2020 16:28:47 +0200 Subject: [PATCH 18/40] added linux wscript that includes libcurl into pyinstaller bootloader --- .../old_machine_bootloader/linux/wscript | 806 ++++++++++++++++++ .../{ => windows}/old_machine_bootloader.c | 0 .../{ => windows}/old_machine_bootloader.h | 0 .../{ => windows}/pyi_main.c | 0 4 files changed, 806 insertions(+) create mode 100644 monkey/infection_monkey/external_tools/old_machine_bootloader/linux/wscript rename monkey/infection_monkey/external_tools/old_machine_bootloader/{ => windows}/old_machine_bootloader.c (100%) rename monkey/infection_monkey/external_tools/old_machine_bootloader/{ => windows}/old_machine_bootloader.h (100%) rename monkey/infection_monkey/external_tools/old_machine_bootloader/{ => windows}/pyi_main.c (100%) diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/linux/wscript b/monkey/infection_monkey/external_tools/old_machine_bootloader/linux/wscript new file mode 100644 index 000000000..b66ff74cb --- /dev/null +++ b/monkey/infection_monkey/external_tools/old_machine_bootloader/linux/wscript @@ -0,0 +1,806 @@ +# -*- mode: python -*- vim: filetype=python +# ----------------------------------------------------------------------------- +# Copyright (c) 2014-2020, PyInstaller Development Team. +# +# Distributed under the terms of the GNU General Public License (version 2 +# or later) with exception for distributing the bootloader. +# +# The full license is in the file COPYING.txt, distributed with this software. +# +# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception) +# ----------------------------------------------------------------------------- + + +""" +Bootloader building script. +""" + +import os +import platform +import sys +import re +import sysconfig +from waflib.Configure import conf +from waflib import Logs, Utils, Options +from waflib.Build import BuildContext, InstallContext + +# The following two variables are used by the target "waf dist" +VERSION = 'nodist' +APPNAME = 'PyInstallerBootloader' + +# These variables are mandatory ('/' are converted automatically) +top = '.' +out = 'build' + +# Build variants of bootloader. +# PyInstaller provides debug/release bootloaders and console/windowed +# variants. +# Every variant has different exe name. +variants = { + 'debug': 'run_d', + 'debugw': 'runw_d', + 'release': 'run', + 'releasew': 'runw', +} + +# PyInstaller only knows platform.system(), so we need to +# map waf's DEST_OS to these values. +DESTOS_TO_SYSTEM = { + 'linux': 'Linux', + 'freebsd': 'FreeBSD', + 'openbsd': 'OpenBSD', + 'win32': 'Windows', + 'darwin': 'Darwin', + 'sunos': platform.system(), ## FIXME: inhibits cross-compile + 'hpux': 'HP-UX', + 'aix': 'AIX', +} + +# Map from platform.system() to waf's DEST_OS +SYSTEM_TO_BUILDOS = { + 'Linux': 'linux', + 'FreeBSD': 'freebsd', + 'Windows': 'win32', + 'Darwin': 'darwin', + 'Solaris': 'sunos', + 'SunOS': 'sunos', + 'HP-UX': 'hpux', + 'AIX': 'aix', +} + +# waf's name of the system we are building on +BUILD_OS = SYSTEM_TO_BUILDOS.get(platform.system(), platform.system()) + +is_cross = None + + +def machine(): + """ + Differenciate path to bootloader with machine name if necessary. + + Machine name in bootloader is necessary only for non-x86 architecture. + """ + # IMPORTANT: Keep this in line with PyInstaller.compat.machine() + mach = platform.machine() + if mach.startswith('arm'): + return 'arm' + elif mach.startswith('aarch'): + return 'aarch' + else: + # Assume x86/x86_64 machine. + return None + + +def assoc_programm(ctx, name): + # Search other programs we need, based on the name of the compiler + # (replace "gcc" or "clang" by the tool name) + cc = ctx.env.CC[0] + prog = re.sub(r'(^|^.*-)(gcc|clang)(-.*|\.exe$|$)', + r'\1' + name + r'\3', + os.path.basename(cc)) + prog = os.path.join(os.path.dirname(cc), prog) + # waf unconditionally appends the extension even if there is one already. + # So we need to remove the existing one here. + exts = Utils.is_win32 and r'\.(exe|com|bat|cmd)$' or r'\.(sh|pl|py)$' + prog = re.sub(exts, '', prog) + return prog + + +def options(ctx): + ctx.load('compiler_c') + + ctx.add_option('--debug', + action='store_true', + help='Include debugging info for GDB.', + default=False, + dest='debug') + ctx.add_option('--leak-detector', + action='store_true', + help='Link with Boehm garbage collector to detect memory leaks.', + default=False, + dest='boehmgc') + ctx.add_option('--clang', + action='store_true', + help='Try to find clang C compiler instead of gcc.', + default=False, + dest='clang') + ctx.add_option('--gcc', + action='store_true', + help='Try to find GNU C compiler.', + default=False, + dest='gcc') + ctx.add_option('--target-arch', + action='store', + help='Target architecture format (32bit, 64bit). ' + 'This option allows to build 32bit bootloader with 64bit compiler ' + 'and 64bit Python.', + default=None, + dest='target_arch') + ctx.add_option('--show-warnings', action='store_true', + help='Make gcc print out the warnings we consider as ' + 'being non-fatal. All other warinings are still ' + 'treated as errors. Mind deleting the `build` ' + 'directory first to ensure all files are actually ' + 'recompiled.', + dest='show_warnings') + + grp = ctx.add_option_group('Linux Standard Base (LSB) compliance', + 'These options have effect only on Linux.') + grp.add_option('--no-lsb', + action='store_true', + help=('Build "normal" (non-LSB-compliant) bootloader.' + '(this is the default).'), + default=True, + dest='nolsb') + grp.add_option('--lsb', + action='store_false', + help='Build LSB compliant bootloader.', + default=True, + dest='nolsb') + grp.add_option('--lsbcc-path', + action='store', + help='Path where to look for lsbcc. By default PATH is ' + 'searched for lsbcc otherwise is tried file ' + '/opt/lsb/bin/lsbcc. [Default: lsbcc]', + default=None, + dest='lsbcc_path') + grp.add_option('--lsb-target-version', + action='store', + help='Specify LSB target version [Default: 4.0]', + default='4.0', + dest='lsb_version') + + +@conf +def set_lsb_compiler(ctx): + """ + Build LSB (Linux Standard Base) bootloader. + + LSB bootloader allows to build bootloader binary that is compatible + with almost every Linux distribution. + 'lsbcc' just wraps gcc in a special way. + """ + Logs.pprint('CYAN', 'Building LSB (Linux Standard Base) bootloader.') + lsb_paths = ['/opt/lsb/bin'] + if ctx.options.lsbcc_path: + lsb_paths.insert(0, ctx.options.lsbcc_path) + try: + ctx.find_program('lsbcc', var='LSBCC', path_list=lsb_paths) + except ctx.errors.ConfigurationError: + # Fail hard and print warning if lsbcc is not available. + # if not ctx.env.LSBCC: + ctx.fatal('LSB (Linux Standard Base) tools >= 4.0 are ' + 'required.\nTry --no-lsb option if not interested in ' + 'building LSB binary.') + + # lsbcc as CC compiler + ctx.env.append_value('CFLAGS', '--lsb-cc=%s' % ctx.env.CC[0]) + ctx.env.append_value('LINKFLAGS', '--lsb-cc=%s' % ctx.env.CC[0]) + ctx.env.CC = ctx.env.LSBCC + ctx.env.LINK_CC = ctx.env.LSBCC + ## check LSBCC flags + # --lsb-besteffort - binary will work on platforms without LSB stuff + # --lsb-besteffort - available in LSB build tools >= 4.0 + ctx.check_cc(cflags='--lsb-besteffort', + msg='Checking for LSB build tools >= 4.0', + errmsg='LSB >= 4.0 is required', mandatory=True) + ctx.env.append_value('CFLAGS', '--lsb-besteffort') + ctx.env.append_value('LINKFLAGS', '--lsb-besteffort') + # binary compatibility with a specific LSB version + # LSB 4.0 can generate binaries compatible with 3.0, 3.1, 3.2, 4.0 + # however because of using function 'mkdtemp', loader requires + # using target version 4.0 + lsb_target_flag = '--lsb-target-version=%s' % ctx.options.lsb_version + ctx.env.append_value('CFLAGS', lsb_target_flag) + ctx.env.append_value('LINKFLAGS', lsb_target_flag) + + +def check_sizeof_pointer(ctx): + def check(type, expected): + # test code taken from autoconf resp. Scons: this is a pretty clever + # hack to find that a type is of a given size using only compilation. + # This speeds things up quite a bit compared to straightforward code + # actually running the code. + # Plus: This works cross :-) + fragment = ''' + int main() { + static int test_array[1 - 2 * !(sizeof(%s) == %d)]; + test_array[0] = 0; + return 0; + }''' % (type, expected) + return ctx.check_cc(fragment=fragment, execute=False, mandatory=False) + + ctx.start_msg("Checking size of pointer") + for size in (4, 8): + if check("void *", size): + break + else: + ctx.end_msg(False) + ctx.fatal( + "Couldn't determine pointer size, only 32 or 64 bit are supported. Please use `--target-arch' to set the pointer size.") + ctx.end_msg(size) + return size + + +@conf +def detect_arch(ctx): + """ + Handle options --target-arch or use the same + architecture as the compiler. + """ + try: + system = DESTOS_TO_SYSTEM[ctx.env.DEST_OS] + except KeyError: + ctx.fatal('Unrecognized target system: %s' % ctx.env.DEST_OS) + + # Get arch values either from CLI or detect it. + if ctx.options.target_arch: + arch = ctx.options.target_arch + ctx.msg('Platform', '%s-%s manually chosen' % (system, arch)) + ctx.env.ARCH_FLAGS_REQUIRED = True + else: + # PyInstaller uses the result of platform.architecture() to determine + # the bits and this is testing the pointer size (via module struct). + # We do the same here. + arch = "%sbit" % (8 * check_sizeof_pointer(ctx)) + ctx.msg('Platform', '%s-%s detected based on compiler' % (system, arch)) + ctx.env.ARCH_FLAGS_REQUIRED = False + if not arch in ('32bit', '64bit'): + ctx.fatal('Unrecognized target architecture: %s' % arch) + + # Pass return values as environment variables. + ctx.env.PYI_ARCH = arch # '32bit' or '64bit' + ctx.env.PYI_SYSTEM = system + + +@conf +def set_arch_flags(ctx): + """ + Set properly architecture flag (32 or 64 bit) cflags for compiler + and CPU target for compiler. + """ + + def check_arch_cflag(cflag32, cflag64): + cflag = cflag32 if ctx.env.PYI_ARCH == '32bit' else cflag64 + if ctx.check_cc(cflags=cflag, + features='c', # only compile, don't link + mandatory=ctx.env.ARCH_FLAGS_REQUIRED): + ctx.env.append_value('CFLAGS', cflag) + if ctx.check_cc(linkflags=cflag, + mandatory=ctx.env.ARCH_FLAGS_REQUIRED): + ctx.env.append_value('LINKFLAGS', cflag) + + if ctx.env.DEST_OS == 'win32' and ctx.env.CC_NAME == 'msvc': + # Set msvc linkflags based on architecture. + if ctx.env.PYI_ARCH == '32bit': + ctx.env['MSVC_TARGETS'] = ['x86'] + ctx.env.append_value('LINKFLAGS', '/MACHINE:X86') + # Set LARGE_ADDRESS_AWARE_FLAG to True. + # On Windows this allows 32bit apps to use 4GB of memory and + ctx.env.append_value('LINKFLAGS', '/LARGEADDRESSAWARE') + elif ctx.env.PYI_ARCH == '64bit': + ctx.env['MSVC_TARGETS'] = ['x64'] + ctx.env.append_value('LINKFLAGS', '/MACHINE:X64') + + # Enable 64bit porting warnings and other warnings too. + ctx.env.append_value('CFLAGS', '/W3') + # We use SEH exceptions in winmain.c; make sure they are activated. + ctx.env.append_value('CFLAGS', '/EHa') + + # Ensure proper architecture flags on Mac OS X. + elif ctx.env.DEST_OS == 'darwin': + # Default compiler on Mac OS X is Clang. + # Clang does not have flags '-m32' and '-m64'. + if ctx.env.PYI_ARCH == '32bit': + mac_arch = ['-arch', 'i386'] + else: + mac_arch = ['-arch', 'x86_64'] + ctx.env.append_value('CFLAGS', mac_arch) + ctx.env.append_value('CXXFLAGS', mac_arch) + ctx.env.append_value('LINKFLAGS', mac_arch) + + # AIX specific flags + elif ctx.env.DEST_OS == 'aix': + if ctx.env.CC_NAME == 'gcc': + check_arch_cflag('-maix32', '-maix64') + else: + # We are using AIX/xlc compiler + check_arch_cflag('-q32', '-q64') + + elif ctx.env.DEST_OS == 'sunos': + if ctx.env.CC_NAME == 'gcc': + check_arch_cflag('-m32', '-m64') + else: + # We use SUNWpro C compiler + check_arch_cflag('-xarch=generic', '-xarch=v9') + + elif ctx.env.DEST_OS == 'hpux': + if ctx.env.CC_NAME == 'gcc': + check_arch_cflag('-milp32', '-mlp64') + else: + # We use xlc compiler + pass + + # Other compiler - not msvc. + else: + if machine() == 'sw_64': + # The gcc has no '-m64' option under sw64 machine, but the + # __x86_64__ macro needs to be defined + conf.env.append_value('CCDEFINES', '__x86_64__') + # This ensures proper compilation with 64bit gcc and 32bit Python + # or vice versa or with manually choosen --target-arch. + # Option -m32/-m64 has to be passed to cflags and linkflages. + else: + check_arch_cflag('-m32', '-m64') + if ctx.env.PYI_ARCH == '32bit' and ctx.env.DEST_OS == 'win32': + # Set LARGE_ADDRESS_AWARE_FLAG to True. + # On Windows this allows 32bit apps to use 4GB of memory and + # not only 2GB. + # TODO verify if this option being as default might cause any side + # effects. + ctx.env.append_value('LINKFLAGS', '-Wl,--large-address-aware') + + # We need to pass architecture switch to the 'windres' tool. + if ctx.env.DEST_OS == 'win32' and ctx.env.CC_NAME != 'msvc': + if ctx.env.PYI_ARCH == '32bit': + ctx.env.WINRCFLAGS = ['--target=pe-i386'] + else: + ctx.env.WINRCFLAGS = ['--target=pe-x86-64'] + # Since WINRC config changed above, must set other options as well + ctx.env.WINRC_TGT_F = '-o' + ctx.env.WINRC_SRC_F = '-i' + + ctx.env.append_value('LINKFLAGS', '/usr/local/lib/libcurl.a') + + +def configure(ctx): + ctx.msg('Python Version', sys.version.replace(os.linesep, '')) + # For MSVC the target arch must already been set when the compiler is + # searched. + if ctx.options.target_arch == '32bit': + ctx.env['MSVC_TARGETS'] = ['x86'] + elif ctx.options.target_arch == '64bit': + ctx.env['MSVC_TARGETS'] = ['x64'] + ### C compiler + + # Allow to use Clang if preferred. + if ctx.options.clang: + ctx.load('clang') + # Allow to use gcc if preferred. + elif ctx.options.gcc: + ctx.load('gcc') + else: + ctx.load('compiler_c') # Any available C compiler. + # LSB compatible bootloader only for Linux and without cli option --no-lsb. + if ctx.env.DEST_OS == 'linux' and not ctx.options.nolsb: + ctx.set_lsb_compiler() + + global is_cross + is_cross = (BUILD_OS != ctx.env.DEST_OS) + + if is_cross: + ctx.msg('System', 'Assuming cross-compilation for %s' % + DESTOS_TO_SYSTEM[ctx.env.DEST_OS]) + + if ctx.env.DEST_OS in ('freebsd', 'hpux', 'sunos'): + # For these FreeBSD and HP-UX we determine some settings from + # Python's sysconfig. For cross-compiling somebody needs to + # implement options to overwrite these values as they may be + # wrong. + # For SunOS/Solaris mappgin DEST_OS to system is not yet known. + ctx.fatal('Cross-compiling for target %s is not yet supported. ' + 'If you want this feature, please help implementing. ' + 'See the wscript file for details.' % ctx.env.DEST_OS) + + # Detect architecture after completing compiler search + ctx.detect_arch() + + # Set proper architecture and CPU for C compiler + ctx.set_arch_flags() + + ### Other Tools + + if ctx.env.DEST_OS == 'win32': + # Do not embed manifest file when using MSVC (Visual Studio). + # Manifest file will be added in the phase of packaging python + # application by PyInstaller. + ctx.env.MSVC_MANIFEST = False + + if ctx.env.CC_NAME != 'msvc': + # Load tool to process *.rc* files for C/C++ like icon for exe + # files. For msvc waf loads this tool automatically + ctx.find_program([assoc_programm(ctx, 'windres')], var='WINRC') + ctx.load('winres') + + ### C Compiler optimizations. + # TODO Set proper optimization flags for MSVC (Visual Studio). + + if ctx.options.debug: + if ctx.env.DEST_OS == 'win32' and ctx.env.CC_NAME == 'msvc': + # Include information for debugging in MSVC/msdebug + ctx.env.append_value('CFLAGS', '/Z7') + ctx.env.append_value('CFLAGS', '/Od') + ctx.env.append_value('LINKFLAGS', '/DEBUG') + else: + # Include gcc debugging information for debugging in GDB. + ctx.env.append_value('CFLAGS', '-g') + else: + if ctx.env.DEST_OS != 'sunos': + ctx.env.append_value('CFLAGS', '-O2') + else: + # Solaris SUN CC doesn't support '-O2' flag + ctx.env.append_value('CFLAGS', '-O') + + if ctx.env.CC_NAME == 'gcc': + # !! These flags are gcc specific + # Turn on all warnings to improve code quality and avoid + # errors. Unused variables and unused functions are still + # accepted to avoid even more conditional code. + # If you are ever tempted to change this, review the commit + # history of this place first. + ctx.env.append_value('CFLAGS', ['-Wall', + '-Werror', + '-Wno-error=unused-variable', + '-Wno-error=unused-function']) + if not ctx.options.show_warnings: + ctx.env.append_value('CFLAGS', ['-Wno-unused-variable', + '-Wno-unused-function']) + + ### Defines, Includes + + if not ctx.env.DEST_OS == 'win32': + # Defines common for Unix and Unix-like platforms. + # For details see: + # http://man.he.net/man7/feature_test_macros + ctx.env.append_value('DEFINES', '_REENTRANT') + + # mkdtemp() is available only if _BSD_SOURCE is defined. + ctx.env.append_value('DEFINES', '_BSD_SOURCE') + + if ctx.env.DEST_OS == 'linux': + # Recent GCC 5.x complains about _BSD_SOURCE under Linux: + # _BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE + ctx.env.append_value('DEFINES', '_DEFAULT_SOURCE') + + # TODO What other platforms support _FORTIFY_SOURCE macro? OS X? + # TODO OS X's CLang appears to support this macro as well. See: + # https://marc.info/?l=cfe-dev&m=122032133830183 + + # For security, enable the _FORTIFY_SOURCE macro detecting buffer + # overflows in various string and memory manipulation functions. + if ctx.options.debug: + ctx.env.append_value('CFLAGS', '-U_FORTIFY_SOURCE') + elif ctx.env.CC_NAME == 'gcc': + # Undefine this macro if already defined by default to avoid + # "macro redefinition" errors. + ctx.env.append_value('CFLAGS', '-U_FORTIFY_SOURCE') + + # Define this macro. + ctx.env.append_value('DEFINES', '_FORTIFY_SOURCE=2') + # On Mac OS X, mkdtemp() is available only with _DARWIN_C_SOURCE. + elif ctx.env.DEST_OS == 'darwin': + ctx.env.append_value('DEFINES', '_DARWIN_C_SOURCE') + + if ctx.env.DEST_OS == 'win32': + ctx.env.append_value('DEFINES', 'WIN32') + ctx.env.append_value('CPPPATH', '../zlib') + + elif ctx.env.DEST_OS == 'sunos': + ctx.env.append_value('DEFINES', 'SUNOS') + if ctx.env.CC_NAME == 'gcc': + # On Solaris using gcc the linker options for shared and static + # libraries are slightly different from other platforms. + ctx.env['SHLIB_MARKER'] = '-Wl,-Bdynamic' + ctx.env['STLIB_MARKER'] = '-Wl,-Bstatic' + # On Solaris using gcc, the compiler needs to be gnu99 + ctx.env.append_value('CFLAGS', '-std=gnu99') + + elif ctx.env.DEST_OS == 'aix': + ctx.env.append_value('DEFINES', 'AIX') + # On AIX some APIs are restricted if _ALL_SOURCE is not defined. + # In the case of PyInstaller, we need the AIX specific flag RTLD_MEMBER + # for dlopen() which is used to load a shared object from a library + # archive. We need to load the Python library like this: + # dlopen("libpython2.7.a(libpython2.7.so)", RTLD_MEMBER) + ctx.env.append_value('DEFINES', '_ALL_SOURCE') + + # On AIX using gcc the linker options for shared and static + # libraries are slightly different from other platforms. + ctx.env['SHLIB_MARKER'] = '-Wl,-bdynamic' + ctx.env['STLIB_MARKER'] = '-Wl,-bstatic' + + elif ctx.env.DEST_OS == 'hpux': + ctx.env.append_value('DEFINES', 'HPUX') + if ctx.env.CC_NAME == 'gcc': + if ctx.env.PYI_ARCH == '32bit': + ctx.env.append_value('LIBPATH', '/usr/local/lib/hpux32') + ctx.env.append_value('STATICLIBPATH', '/usr/local/lib/hpux32') + else: + ctx.env.append_value('LIBPATH', '/usr/local/lib/hpux64') + ctx.env.append_value('STATICLIBPATH', '/usr/local/lib/hpux64') + + + elif ctx.env.DEST_OS == 'darwin': + # OS X 10.7 might not understand some load commands. + # The following variable fixes 10.7 compatibility. + # According to OS X doc this variable is equivalent to gcc option: + # -mmacosx-version-min=10.7 + os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.7' + + ### Libraries + + if ctx.env.DEST_OS == 'win32': + if ctx.env.CC_NAME == 'msvc': + ctx.check_libs_msvc('user32 comctl32 kernel32 advapi32 ws2_32', + mandatory=True) + else: + ctx.check_cc(lib='user32', mandatory=True) + ctx.check_cc(lib='comctl32', mandatory=True) + ctx.check_cc(lib='kernel32', mandatory=True) + ctx.check_cc(lib='advapi32', mandatory=True) + ctx.check_cc(lib='ws2_32', mandatory=True) + else: + # Mac OS X and FreeBSD do not need libdl. + # https://stackoverflow.com/questions/20169660/where-is-libdl-so-on-mac-os-x + if ctx.env.DEST_OS not in ('darwin', 'freebsd', 'openbsd'): + ctx.check_cc(lib='dl', mandatory=True) + if ctx.env.DEST_OS == 'freebsd' and sysconfig.get_config_var('HAVE_PTHREAD_H'): + # On FreeBSD if python has threads: libthr needs to be loaded in + # the main process, so the bootloader needs to be link to thr. + ctx.check_cc(lib='thr', mandatory=True) + ctx.check_cc(lib='z', mandatory=True, uselib_store='Z') + # This uses Boehm GC to manage memory - it replaces malloc() / free() + # functions. Some messages are printed if memory is not deallocated. + if ctx.options.boehmgc: + ctx.check_cc(lib='gc', mandatory=True) + ctx.env.append_value('DEFINES', 'PYI_LEAK_DETECTOR') + ctx.env.append_value('DEFINES', 'GC_FIND_LEAK') + ctx.env.append_value('DEFINES', 'GC_DEBUG') + ctx.env.append_value('DEFINES', 'SAVE_CALL_CHAIN') + + ### Functions + + # The old ``function_name`` parameter to ``check_cc`` is no longer + # supported. This code is based on old waf source at + # https://gitlab.com/ita1024/waf/commit/62fe305d04ed37b1be1a3327a74b2fee6c458634#255b2344e5268e6a34bedd2f8c4680798344fec7. + SNIP_FUNCTION = ''' + #include <%s> + + int main(int argc, char **argv) { + void (*p)(); + + (void)argc; (void)argv; + p=(void(*)())(%s); + return !p; + } +''' + # OS support for these functions varies. + for header, function_name in (('stdlib.h', 'unsetenv'), + ('stdlib.h', 'mkdtemp'), + ('string.h', 'strndup'), + ('string.h', 'strnlen')): + ctx.check( + fragment=SNIP_FUNCTION % (header, function_name), + mandatory=False, + define_name=ctx.have_define(function_name), + msg='Checking for function %s' % function_name) + # ctx.check(lib=["crypto", "ssl", "curl"]) + ### CFLAGS + + if ctx.env.DEST_OS == 'win32': + if ctx.env.CC_NAME == 'msvc': + # Use Unicode entry point wmain/wWinMain and wchar_t WinAPI + ctx.env.append_value('CFLAGS', '-DUNICODE') + ctx.env.append_value('CFLAGS', '-D_UNICODE') + # set XP target as minimal target OS ver. when using Windows w/MSVC + # https://blogs.msdn.microsoft.com/vcblog/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012/ + ctx.env.append_value('LINKFLAGS', '/SUBSYSTEM:CONSOLE,%s' % ( + '5.01' if ctx.env.PYI_ARCH == '32bit' else '5.02')) + else: + # Use Visual C++ compatible alignment + ctx.env.append_value('CFLAGS', '-mms-bitfields') + + # Define UNICODE and _UNICODE for wchar_t WinAPI + ctx.env.append_value('CFLAGS', '-municode') + + # Use Unicode entry point wmain/wWinMain + ctx.env.append_value('LINKFLAGS', '-municode') + if ctx.env.DEST_OS == 'darwin': + ctx.env.append_value('CFLAGS', '-mmacosx-version-min=10.7') + ctx.env.append_value('LINKFLAGS', '-mmacosx-version-min=10.7') + + # On linux link only with needed libraries. + # -Wl,--as-needed is on some platforms detected during configure but + # fails during build. (Mac OS X, Solaris, AIX) + if ctx.env.DEST_OS == 'linux' and ctx.check_cc(cflags='-Wl,--as-needed'): + ctx.env.append_value('LINKFLAGS', '-Wl,--as-needed') + + if ctx.env.CC_NAME != 'msvc': + # This tool allows reducing the size of executables. + ctx.find_program([assoc_programm(ctx, 'strip')], var='STRIP') + ctx.load('strip', tooldir='tools') + # There is a strip flag for AIX environment + if ctx.env.DEST_OS == 'aix': + if ctx.env.PYI_ARCH == '32bit': + ctx.env.append_value('STRIPFLAGS', '-X32') + elif ctx.env.PYI_ARCH == '64bit': + ctx.env.append_value('STRIPFLAGS', '-X64') + + ctx.env.append_value('LINKFLAGS', '-pthread') + + def windowed(name, baseenv): + """Setup windowed environment based on `baseenv`.""" + ctx.setenv(name, baseenv) # Inherit from `baseenv`. + ctx.env.append_value('DEFINES', 'WINDOWED') + + if ctx.env.DEST_OS == 'win32': + if ctx.env.CC_NAME != 'msvc': + # For MinGW disable console window on Windows - MinGW option + # TODO Is it necessary to have -mwindows for C and LINK flags? + ctx.env.append_value('LINKFLAGS', '-mwindows') + ctx.env.append_value('CFLAGS', '-mwindows') + else: + _link_flags = ctx.env._get_list_value_for_modification('LINKFLAGS') + _subsystem = [x for x in _link_flags if x.startswith('/SUBSYSTEM:')] + for parameter in _subsystem: + _link_flags.remove(parameter) + ctx.env.append_value('LINKFLAGS', '/SUBSYSTEM:WINDOWS,%s' % ( + '5.01' if ctx.env.PYI_ARCH == '32bit' else '5.02')) + elif ctx.env.DEST_OS == 'darwin': + # To support catching AppleEvents and running as ordinary OSX GUI + # app, we have to link against the Carbon framework. + # This linkage only needs to be there for the windowed bootloaders. + ctx.env.append_value('LINKFLAGS', '-framework') + ctx.env.append_value('LINKFLAGS', 'Carbon') + # TODO Do we need to link with this framework? + # conf.env.append_value('LINKFLAGS', '-framework') + # conf.env.append_value('LINKFLAGS', 'ApplicationServices') + + ### DEBUG and RELEASE environments + basic_env = ctx.env + + ## setup DEBUG environment + ctx.setenv('debug', basic_env) # Ensure env contains shared values. + debug_env = ctx.env + # This defines enable verbose console output of the bootloader. + ctx.env.append_value('DEFINES', ['LAUNCH_DEBUG']) + ctx.env.append_value('DEFINES', 'NDEBUG') + + ## setup windowed DEBUG environment + windowed('debugw', debug_env) + + ## setup RELEASE environment + ctx.setenv('release', basic_env) # Ensure env contains shared values. + release_env = ctx.env + ctx.env.append_value('DEFINES', 'NDEBUG') + + ## setup windowed RELEASE environment + windowed('releasew', release_env) + + +# TODO Use 'strip' command to decrease the size of compiled bootloaders. +def build(ctx): + if not ctx.variant: + ctx.fatal('Call "python waf all" to compile all bootloaders.') + exe_name = variants[ctx.variant] + + install_path = os.path.join(os.getcwd(), '../PyInstaller/bootloader', + ctx.env.PYI_SYSTEM + "-" + ctx.env.PYI_ARCH) + install_path = os.path.normpath(install_path) + + if machine(): + install_path += '-' + machine() + + if not ctx.env.LIB_Z: + # If the operating system does not provide zlib, build our own. The + # configure phase defines whether or not zlib is mandatory for a + # platform. + ctx.stlib( + source=ctx.path.ant_glob('zlib/*.c'), + target='static_zlib', + name='Z', + includes='zlib') + + # By default strip final executables to make them smaller. + features = 'strip' + if ctx.env.CC_NAME == 'msvc': + # Do not strip bootloaders when using MSVC. + features = '' + + if ctx.env.DEST_OS == 'win32': + # Use different RC file (icon) for console/windowed mode - remove '_d' + icon_rc = 'windows/' + exe_name.replace('_d', '') + '.rc' + # On Windows we need to link library zlib statically. + ctx.program( + source=ctx.path.ant_glob(['src/*.c', icon_rc]), + target=exe_name, + install_path=install_path, + use='USER32 COMCTL32 KERNEL32 ADVAPI32 WS2_32 Z', + includes='src windows zlib', + features=features, + ) + else: + # Linux, Darwin (MacOSX), ... + # Only the libs found will actually be used, so it's safe to list all + # here. The decision if a lib is required for a specific platform is + # made in the configure phase. + libs = ['DL', 'M', 'Z', # 'z' - zlib, 'm' - math, + 'THR', 'pthread'] # may be used on FreBSD + # staticlibs = ['curl'] + staticlibs = ['curl', 'ssl', 'crypto', 'z'] + if ctx.env.DEST_OS == 'aix': + # link statically with zlib, case sensitive + libs.remove('Z') + staticlibs.append('z') + if ctx.options.boehmgc: + libs.append('GC') + + ctx.program( + source=ctx.path.ant_glob('src/*.c'), + target=exe_name, + includes='src', + use=libs, + stlib=staticlibs, + stlibpath=['/usr/local/lib/', '/usr/lib/x86_64-linux-gnu/'], + install_path=install_path, + features=features) + + +class make_all(BuildContext): + """ + Do build and install in one step. + """ + cmd = 'make_all' + + def execute_build(ctx): + Options.commands = ['build_debug', 'build_release'] + # On Windows and Mac OS X we also need console/windowed bootloaders. + # On other platforms they make no sense. + if ctx.env.DEST_OS in ('win32', 'darwin'): + Options.commands += ['build_debugw', 'build_releasew'] + # Install bootloaders. + Options.commands += ['install_debug', 'install_release'] + if ctx.env.DEST_OS in ('win32', 'darwin'): + Options.commands += ['install_debugw', 'install_releasew'] + + +def all(ctx): + """ + Do configure, build and install in one step. + """ + # `all` is run prior to `configure`, thus it does not get a build context. + # Thus another command `make_all` is required which gets the build + # context and can make decisions based on the outcome of `configure`. + Options.commands = ['distclean', 'configure', 'make_all'] + + +# Set up building several variants of bootloader. +for x in variants: + class BootloaderContext(BuildContext): + cmd = 'build' + '_' + x + variant = x + + + class BootloaderInstallContext(InstallContext): + cmd = 'install' + '_' + x + variant = x diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c b/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.c similarity index 100% rename from monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.c rename to monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.c diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.h b/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.h similarity index 100% rename from monkey/infection_monkey/external_tools/old_machine_bootloader/old_machine_bootloader.h rename to monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.h diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/pyi_main.c b/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/pyi_main.c similarity index 100% rename from monkey/infection_monkey/external_tools/old_machine_bootloader/pyi_main.c rename to monkey/infection_monkey/external_tools/old_machine_bootloader/windows/pyi_main.c From 72d266a1b824e103e2a770d2490c09600cbdee8f Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 12 Feb 2020 11:09:11 +0200 Subject: [PATCH 19/40] Added node and edge based on bootloader telemetry. --- monkey/monkey_island/cc/bootloader_server.py | 1 + .../monkey_island/cc/resources/bootloader.py | 15 +++++--- monkey/monkey_island/cc/services/edge.py | 7 ++-- monkey/monkey_island/cc/services/node.py | 36 +++++++++++++++++++ 4 files changed, 53 insertions(+), 6 deletions(-) diff --git a/monkey/monkey_island/cc/bootloader_server.py b/monkey/monkey_island/cc/bootloader_server.py index 1638c6316..7706817f8 100644 --- a/monkey/monkey_island/cc/bootloader_server.py +++ b/monkey/monkey_island/cc/bootloader_server.py @@ -27,6 +27,7 @@ class BootloaderHTTPRequestHandler(BaseHTTPRequestHandler): conf = self.server.mongo_client['monkeyisland']['config'].find_one({'name': 'initial'}) island_server_path = BootloaderHTTPRequestHandler.get_bootloader_resource_path_from_config(conf) r = requests.post(url=island_server_path, data=post_data, verify=False) + if r.status_code != 200: self.send_response(404) else: diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index 80a7b56d7..eab4cd5c9 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -1,6 +1,11 @@ +import json + import flask_restful from flask import request, make_response +from monkey_island.cc.database import mongo +from monkey_island.cc.services.node import NodeService + WINDOWS_VERSIONS = { "5.0": "Windows 2000", "5.1": "Windows XP", @@ -17,9 +22,11 @@ class Bootloader(flask_restful.Resource): # Used by monkey. can't secure. def post(self, **kw): - os_version = request.data.decode().split(" ") - if (os_version[0][0] == "W"): - os_type = "windows" - os_version = os_version[1:] + data = json.loads(request.data.decode().replace("\n", "")) + local_addr = [i for i in data["ips"] if i.startswith("127")] + if local_addr: + data["ips"].remove(local_addr[0]) + mongo.db.bootloader_telems.insert(data) + node_id = NodeService.get_or_create_node_from_bootloader_telem(data) return make_response({"status": "OK"}, 200) diff --git a/monkey/monkey_island/cc/services/edge.py b/monkey/monkey_island/cc/services/edge.py index d5e38768d..a8016f5a8 100644 --- a/monkey/monkey_island/cc/services/edge.py +++ b/monkey/monkey_island/cc/services/edge.py @@ -2,7 +2,7 @@ from bson import ObjectId from monkey_island.cc.database import mongo import monkey_island.cc.services.node -from monkey_island.cc.models import Monkey +from monkey_island.cc.models.monkey import Monkey, MonkeyNotFoundError __author__ = "itay.mizeretz" @@ -145,7 +145,10 @@ class EdgeService: from_id = edge["from"] to_id = edge["to"] - from_label = Monkey.get_label_by_id(from_id) + try: + from_label = Monkey.get_label_by_id(from_id) + except MonkeyNotFoundError: + from_label = node_service.get_node_by_id(from_id)['domain_name'] if to_id == ObjectId("000000000000000000000000"): to_label = 'MonkeyIsland' diff --git a/monkey/monkey_island/cc/services/node.py b/monkey/monkey_island/cc/services/node.py index 3109f7a78..feb42cc24 100644 --- a/monkey/monkey_island/cc/services/node.py +++ b/monkey/monkey_island/cc/services/node.py @@ -207,6 +207,42 @@ class NodeService: }) return mongo.db.node.find_one({"_id": new_node_insert_result.inserted_id}) + @staticmethod + def create_node_from_bootloader_telem(bootloader_telem): + new_node_insert_result = mongo.db.node.insert_one( + { + "ip_addresses": bootloader_telem['ips'], + "domain_name": bootloader_telem['hostname'], + "exploited": False, + "creds": [], + "os": + { + "type": bootloader_telem['system'], + "version": bootloader_telem['os_version'] + } + }) + return mongo.db.node.find_one({"_id": new_node_insert_result.inserted_id}) + + @staticmethod + def get_or_create_node_from_bootloader_telem(bootloader_telem): + new_node = mongo.db.node.find_one({"domain_name": bootloader_telem['hostname'], + "ip_addresses": bootloader_telem['ips']}) + if new_node is None: + new_node = NodeService.create_node_from_bootloader_telem(bootloader_telem) + if bootloader_telem['tunnel']: + dst_node = NodeService.get_node_or_monkey_by_ip(bootloader_telem['tunnel']) + else: + dst_node = NodeService.get_monkey_island_node() + edge = EdgeService.get_or_create_edge(new_node['_id'], dst_node['id']) + mongo.db.edge.update({"_id": edge["_id"]}, + {'$set': {'tunnel': bool(bootloader_telem['tunnel']), + 'exploited': (not bool(bootloader_telem['tunnel'])), + 'ip_address': bootloader_telem['ips'][0], + 'group': 'island'}}, + upsert=False) + + return new_node + @staticmethod def get_or_create_node(ip_address, domain_name=''): new_node = mongo.db.node.find_one({"ip_addresses": ip_address}) From 1ebbb83629e5a94ef2d36faf6e848a8cf471a459 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 12 Feb 2020 13:17:29 +0200 Subject: [PATCH 20/40] Improved hostname by parsing out irrelevant data --- monkey/monkey_island/cc/resources/bootloader.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index eab4cd5c9..fac0998cb 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -23,10 +23,17 @@ class Bootloader(flask_restful.Resource): # Used by monkey. can't secure. def post(self, **kw): data = json.loads(request.data.decode().replace("\n", "")) + + # Remove local ips local_addr = [i for i in data["ips"] if i.startswith("127")] if local_addr: data["ips"].remove(local_addr[0]) + + # Clean up os info + data['os_version'] = data['os_version'].split(" ")[0] + mongo.db.bootloader_telems.insert(data) node_id = NodeService.get_or_create_node_from_bootloader_telem(data) + return make_response({"status": "OK"}, 200) From f7925720791e8eb2083bcfe8a2a0eeeae09c66cd Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 12 Feb 2020 15:39:20 +0200 Subject: [PATCH 21/40] Adjusted island to parse changed host info --- monkey/monkey_island/cc/resources/bootloader.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index fac0998cb..bff8a94cd 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -22,18 +22,14 @@ class Bootloader(flask_restful.Resource): # Used by monkey. can't secure. def post(self, **kw): - data = json.loads(request.data.decode().replace("\n", "")) + data = json.loads(request.data.decode().replace("\n", "").replace("NAME=\"", "").replace("\"\"", "\"")) # Remove local ips local_addr = [i for i in data["ips"] if i.startswith("127")] if local_addr: data["ips"].remove(local_addr[0]) - # Clean up os info - data['os_version'] = data['os_version'].split(" ")[0] - mongo.db.bootloader_telems.insert(data) node_id = NodeService.get_or_create_node_from_bootloader_telem(data) - return make_response({"status": "OK"}, 200) From a0d4b825e922c306b5f25099b6fa12919172a5b7 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Thu, 13 Feb 2020 15:01:59 +0200 Subject: [PATCH 22/40] Added the logic of assigning states to nodes, state(node group) parsing and icon placeholders --- .../monkey_island/cc/resources/bootloader.py | 34 ++++------ .../monkey_island/cc/services/bootloader.py | 42 +++++++++++++ .../cc/services/bootloader_test.py | 35 +++++++++++ monkey/monkey_island/cc/services/node.py | 58 +++++++++++------- .../cc/services/utils/node_groups.py | 54 ++++++++++++++++ .../cc/services/utils/node_groups_test.py | 18 ++++++ .../cc/ui/src/components/map/MapOptions.js | 3 +- .../ui/src/images/nodes/monkey_linux_old.png | Bin 0 -> 148410 bytes .../images/nodes/monkey_linux_starting.png | Bin 0 -> 113708 bytes .../src/images/nodes/monkey_windows_old.png | Bin 0 -> 123796 bytes .../images/nodes/monkey_windows_starting.png | Bin 0 -> 97173 bytes 11 files changed, 198 insertions(+), 46 deletions(-) create mode 100644 monkey/monkey_island/cc/services/bootloader.py create mode 100644 monkey/monkey_island/cc/services/bootloader_test.py create mode 100644 monkey/monkey_island/cc/services/utils/node_groups.py create mode 100644 monkey/monkey_island/cc/services/utils/node_groups_test.py create mode 100644 monkey/monkey_island/cc/ui/src/images/nodes/monkey_linux_old.png create mode 100644 monkey/monkey_island/cc/ui/src/images/nodes/monkey_linux_starting.png create mode 100644 monkey/monkey_island/cc/ui/src/images/nodes/monkey_windows_old.png create mode 100644 monkey/monkey_island/cc/ui/src/images/nodes/monkey_windows_starting.png diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index bff8a94cd..82be595c7 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -1,35 +1,23 @@ import json +from typing import Dict import flask_restful from flask import request, make_response -from monkey_island.cc.database import mongo -from monkey_island.cc.services.node import NodeService - -WINDOWS_VERSIONS = { - "5.0": "Windows 2000", - "5.1": "Windows XP", - "5.2": "Windows XP/server 2003", - "6.0": "Windows Vista/server 2008", - "6.1": "Windows 7/server 2008R2", - "6.2": "Windows 8/server 2012", - "6.3": "Windows 8.1/server 2012R2", - "10.0": "Windows 10/server 2016-2019" -} +from monkey_island.cc.services.bootloader import BootloaderService class Bootloader(flask_restful.Resource): # Used by monkey. can't secure. def post(self, **kw): - data = json.loads(request.data.decode().replace("\n", "").replace("NAME=\"", "").replace("\"\"", "\"")) - - # Remove local ips - local_addr = [i for i in data["ips"] if i.startswith("127")] - if local_addr: - data["ips"].remove(local_addr[0]) - - mongo.db.bootloader_telems.insert(data) - node_id = NodeService.get_or_create_node_from_bootloader_telem(data) - + data = Bootloader.parse_bootloader_request(request.data) + resp = BootloaderService.parse_bootloader_data(data) return make_response({"status": "OK"}, 200) + + @staticmethod + def parse_bootloader_request(request_data: bytes) -> Dict[str, str]: + parsed_data = json.loads(request_data.decode().replace("\n", "") + .replace("NAME=\"", "") + .replace("\"\"", "\"")) + return parsed_data diff --git a/monkey/monkey_island/cc/services/bootloader.py b/monkey/monkey_island/cc/services/bootloader.py new file mode 100644 index 000000000..d1a9eead2 --- /dev/null +++ b/monkey/monkey_island/cc/services/bootloader.py @@ -0,0 +1,42 @@ +from typing import Dict, List + +from monkey_island.cc.database import mongo +from monkey_island.cc.services.node import NodeService +from monkey_island.cc.services.utils.node_groups import NodeGroups + +WINDOWS_VERSIONS = { + "5.0": "Windows 2000", + "5.1": "Windows XP", + "5.2": "Windows XP/server 2003", + "6.0": "Windows Vista/server 2008", + "6.1": "Windows 7/server 2008R2", + "6.2": "Windows 8/server 2012", + "6.3": "Windows 8.1/server 2012R2", + "10.0": "Windows 10/server 2016-2019" +} + +MIN_GLIBC_VERSION = 2.14 + + +class BootloaderService: + + @staticmethod + def parse_bootloader_data(data: Dict) -> str: + data['ips'] = BootloaderService.remove_local_ips(data['ips']) + mongo.db.bootloader_telems.insert(data) + will_monkey_run = BootloaderService.is_glibc_supported(data['glibc_version']) + node = NodeService.get_or_create_node_from_bootloader_data(data, will_monkey_run) + group_keywords = [data['system'], 'monkey'] + group_keywords.append('starting') if will_monkey_run else group_keywords.append('old') + NodeService.set_node_group(node['_id'], NodeGroups.get_group_by_keywords(group_keywords)) + return "abc" + + @staticmethod + def is_glibc_supported(glibc_version_string) -> bool: + glibc_version_string = glibc_version_string.lower() + glibc_version = glibc_version_string.split(' ')[-1] + return glibc_version >= str(MIN_GLIBC_VERSION) and 'eglibc' not in glibc_version_string + + @staticmethod + def remove_local_ips(ip_list) -> List[str]: + return [i for i in ip_list if not i.startswith("127")] diff --git a/monkey/monkey_island/cc/services/bootloader_test.py b/monkey/monkey_island/cc/services/bootloader_test.py new file mode 100644 index 000000000..03df2be97 --- /dev/null +++ b/monkey/monkey_island/cc/services/bootloader_test.py @@ -0,0 +1,35 @@ +from unittest import TestCase + +from monkey_island.cc.services.bootloader import BootloaderService + +WINDOWS_VERSIONS = { + "5.0": "Windows 2000", + "5.1": "Windows XP", + "5.2": "Windows XP/server 2003", + "6.0": "Windows Vista/server 2008", + "6.1": "Windows 7/server 2008R2", + "6.2": "Windows 8/server 2012", + "6.3": "Windows 8.1/server 2012R2", + "10.0": "Windows 10/server 2016-2019" +} + +MIN_GLIBC_VERSION = 2.14 + + +class TestBootloaderService(TestCase): + + def test_is_glibc_supported(self): + str1 = "ldd (Ubuntu EGLIBC 2.15-0ubuntu10) 2.15" + str2 = "ldd (GNU libc) 2.12" + str3 = "ldd (GNU libc) 2.28" + str4 = "ldd (Ubuntu GLIBC 2.23-0ubuntu11) 2.23" + self.assertTrue(not BootloaderService.is_glibc_supported(str1) and + not BootloaderService.is_glibc_supported(str2) and + BootloaderService.is_glibc_supported(str3) and + BootloaderService.is_glibc_supported(str4)) + + def test_remove_local_ips(self): + ips = ["127.1.1.1", "127.0.0.1", "192.168.56.1"] + ips = BootloaderService.remove_local_ips(ips) + self.assertEqual(["192.168.56.1"], ips) + diff --git a/monkey/monkey_island/cc/services/node.py b/monkey/monkey_island/cc/services/node.py index feb42cc24..8a63d576b 100644 --- a/monkey/monkey_island/cc/services/node.py +++ b/monkey/monkey_island/cc/services/node.py @@ -1,4 +1,6 @@ from datetime import datetime, timedelta +from typing import Dict +import socket from bson import ObjectId @@ -7,8 +9,8 @@ from monkey_island.cc.database import mongo from monkey_island.cc.models import Monkey from monkey_island.cc.services.edge import EdgeService from monkey_island.cc.utils import local_ip_addresses -import socket from monkey_island.cc import models +from monkey_island.cc.services.utils.node_groups import NodeGroups __author__ = "itay.mizeretz" @@ -122,20 +124,25 @@ class NodeService: @staticmethod def get_monkey_group(monkey): + keywords = [] if len(set(monkey["ip_addresses"]).intersection(local_ip_addresses())) != 0: - monkey_type = "island_monkey" + keywords.extend(["island", "monkey"]) else: monkey_type = "manual" if NodeService.get_monkey_manual_run(monkey) else "monkey" + keywords.append(monkey_type) - monkey_os = NodeService.get_monkey_os(monkey) - monkey_running = "" if Monkey.get_single_monkey_by_id(monkey["_id"]).is_dead() else "_running" - return "%s_%s%s" % (monkey_type, monkey_os, monkey_running) + keywords.append(NodeService.get_monkey_os(monkey)) + if not Monkey.get_single_monkey_by_id(monkey["_id"]).is_dead(): + keywords.append("running") + return NodeGroups.get_group_by_keywords(keywords).value @staticmethod - def get_node_group(node): + def get_node_group(node) -> str: + if node['group']: + return node['group'] node_type = "exploited" if node.get("exploited") else "clean" node_os = NodeService.get_node_os(node) - return "%s_%s" % (node_type, node_os) + return NodeGroups.get_group_by_keywords([node_type, node_os]).value @staticmethod def monkey_to_net_node(monkey, for_report=False): @@ -166,6 +173,12 @@ class NodeService: "os": NodeService.get_node_os(node) } + @staticmethod + def set_node_group(node_id: str, node_group: NodeGroups): + mongo.db.node.update({"_id": node_id}, + {'$set': {'group': node_group.value}}, + upsert=False) + @staticmethod def unset_all_monkey_tunnels(monkey_id): mongo.db.monkey.update( @@ -208,37 +221,38 @@ class NodeService: return mongo.db.node.find_one({"_id": new_node_insert_result.inserted_id}) @staticmethod - def create_node_from_bootloader_telem(bootloader_telem): + def create_node_from_bootloader_data(bootloader_data: Dict, will_monkey_run: bool): new_node_insert_result = mongo.db.node.insert_one( { - "ip_addresses": bootloader_telem['ips'], - "domain_name": bootloader_telem['hostname'], + "ip_addresses": bootloader_data['ips'], + "domain_name": bootloader_data['hostname'], + "will_monkey_run": will_monkey_run, "exploited": False, "creds": [], "os": { - "type": bootloader_telem['system'], - "version": bootloader_telem['os_version'] + "type": bootloader_data['system'], + "version": bootloader_data['os_version'] } }) return mongo.db.node.find_one({"_id": new_node_insert_result.inserted_id}) @staticmethod - def get_or_create_node_from_bootloader_telem(bootloader_telem): - new_node = mongo.db.node.find_one({"domain_name": bootloader_telem['hostname'], - "ip_addresses": bootloader_telem['ips']}) + def get_or_create_node_from_bootloader_data(bootloader_data: Dict, will_monkey_run: bool) -> Dict: + new_node = mongo.db.node.find_one({"domain_name": bootloader_data['hostname'], + "ip_addresses": bootloader_data['ips']}) if new_node is None: - new_node = NodeService.create_node_from_bootloader_telem(bootloader_telem) - if bootloader_telem['tunnel']: - dst_node = NodeService.get_node_or_monkey_by_ip(bootloader_telem['tunnel']) + new_node = NodeService.create_node_from_bootloader_data(bootloader_data, will_monkey_run) + if bootloader_data['tunnel']: + dst_node = NodeService.get_node_or_monkey_by_ip(bootloader_data['tunnel']) else: dst_node = NodeService.get_monkey_island_node() edge = EdgeService.get_or_create_edge(new_node['_id'], dst_node['id']) mongo.db.edge.update({"_id": edge["_id"]}, - {'$set': {'tunnel': bool(bootloader_telem['tunnel']), - 'exploited': (not bool(bootloader_telem['tunnel'])), - 'ip_address': bootloader_telem['ips'][0], - 'group': 'island'}}, + {'$set': {'tunnel': bool(bootloader_data['tunnel']), + 'exploited': (not bool(bootloader_data['tunnel'])), + 'ip_address': bootloader_data['ips'][0], + 'group': NodeGroups.get_group_by_keywords(['island']).value}}, upsert=False) return new_node diff --git a/monkey/monkey_island/cc/services/utils/node_groups.py b/monkey/monkey_island/cc/services/utils/node_groups.py new file mode 100644 index 000000000..751798b18 --- /dev/null +++ b/monkey/monkey_island/cc/services/utils/node_groups.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +from enum import Enum +from typing import List +import collections + + +class NodeGroups(Enum): + CLEAN_UNKNOWN = 'clean_unknown' + CLEAN_LINUX = 'clean_linux' + CLEAN_WINDOWS = 'clean_windows' + EXPLOITED_LINUX = 'exploited_linux' + EXPLOITED_WINDOWS = 'exploited_windows' + ISLAND = 'island' + ISLAND_MONKEY_LINUX = 'island_monkey_linux' + ISLAND_MONKEY_LINUX_RUNNING = 'island_monkey_linux_running' + ISLAND_MONKEY_WINDOWS = 'island_monkey_windows' + ISLAND_MONKEY_WINDOWS_RUNNING = 'island_monkey_windows_running' + MANUAL_LINUX = 'manual_linux' + MANUAL_LINUX_RUNNING = 'manual_linux_running' + MANUAL_WINDOWS = 'manual_windows' + MANUAL_WINDOWS_RUNNING = 'manual_windows_running' + MONKEY_LINUX = 'monkey_linux' + MONKEY_LINUX_RUNNING = 'monkey_linux_running' + MONKEY_WINDOWS = 'monkey_windows' + MONKEY_WINDOWS_RUNNING = 'monkey_windows_running' + MONKEY_WINDOWS_STARTING = 'monkey_windows_starting' + MONKEY_LINUX_STARTING = 'monkey_linux_starting' + MONKEY_WINDOWS_OLD = 'monkey_windows_old' + MONKEY_LINUX_OLD = 'monkey_linux_old' + + @staticmethod + def get_group_by_keywords(keywords: List) -> NodeGroups: + potential_groups = [i for i in NodeGroups if NodeGroups._is_group_from_keywords(i, keywords)] + if len(potential_groups) > 1: + raise MultipleGroupsFoundException("Multiple groups contain provided keywords. " + "Manually build group string to ensure keyword order.") + elif len(potential_groups) == 0: + raise NoGroupsFoundException("No groups found with provided keywords. " + "Check for typos and make sure group codes want to find exists.") + return potential_groups[0] + + @staticmethod + def _is_group_from_keywords(group, keywords) -> bool: + group_keywords = group.value.split("_") + return collections.Counter(group_keywords) == collections.Counter(keywords) + + +class MultipleGroupsFoundException(Exception): + pass + + +class NoGroupsFoundException(Exception): + pass diff --git a/monkey/monkey_island/cc/services/utils/node_groups_test.py b/monkey/monkey_island/cc/services/utils/node_groups_test.py new file mode 100644 index 000000000..ef7a5b555 --- /dev/null +++ b/monkey/monkey_island/cc/services/utils/node_groups_test.py @@ -0,0 +1,18 @@ +from unittest import TestCase + +from monkey_island.cc.services.utils.node_groups import NodeGroups, NoGroupsFoundException + + +class TestNodeGroups(TestCase): + + def test_get_group_by_keywords(self): + tst1 = NodeGroups.get_group_by_keywords(['island']) == NodeGroups.ISLAND + tst2 = NodeGroups.get_group_by_keywords(['running', 'linux', 'monkey']) == NodeGroups.MONKEY_LINUX_RUNNING + tst3 = NodeGroups.get_group_by_keywords(['monkey', 'linux', 'running']) == NodeGroups.MONKEY_LINUX_RUNNING + tst4 = False + try: + NodeGroups.get_group_by_keywords(['bogus', 'values', 'from', 'long', 'list', 'should', 'fail']) + except NoGroupsFoundException: + tst4 = True + self.assertTrue(tst1 and tst2 and tst3 and tst4) + diff --git a/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js b/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js index 7e4805797..08e8afd0d 100644 --- a/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js +++ b/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js @@ -1,7 +1,8 @@ const groupNames = ['clean_unknown', 'clean_linux', 'clean_windows', 'exploited_linux', 'exploited_windows', 'island', 'island_monkey_linux', 'island_monkey_linux_running', 'island_monkey_windows', 'island_monkey_windows_running', 'manual_linux', 'manual_linux_running', 'manual_windows', 'manual_windows_running', 'monkey_linux', - 'monkey_linux_running', 'monkey_windows', 'monkey_windows_running']; + 'monkey_linux_running', 'monkey_windows', 'monkey_windows_running', 'monkey_windows_starting', + 'monkey_linux_starting', 'monkey_windows_old', 'monkey_linux_old' ]; let getGroupsOptions = () => { let groupOptions = {}; diff --git a/monkey/monkey_island/cc/ui/src/images/nodes/monkey_linux_old.png b/monkey/monkey_island/cc/ui/src/images/nodes/monkey_linux_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d582c8ecf0a5220bb9deb3a9ed908a18d66aa56f GIT binary patch literal 148410 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%0AWv8uTBd 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≪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

LkbH@7hz0=y(?e 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 LYE7_u0-ErD*%@y& literal 0 HcmV?d00001 diff --git a/monkey/monkey_island/cc/ui/src/images/nodes/monkey_linux_starting.png b/monkey/monkey_island/cc/ui/src/images/nodes/monkey_linux_starting.png new file mode 100644 index 0000000000000000000000000000000000000000..a7aa1279330eb521d322146ecec5d326848f91d1 GIT binary patch literal 113708 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

_B_iCq%EnnPQ1$(nP>A3;uqXA3b`z&Xm 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 literal 0 HcmV?d00001 From c2b125012fd6b90712b6640c5e0e3e7c2ab4527a Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 17 Feb 2020 11:13:27 +0200 Subject: [PATCH 23/40] Improved responses to linux bootloader, removed unnecessary files --- .../old_machine_bootloader/linux/wscript | 806 ------------------ .../windows/old_machine_bootloader.c | 189 ---- .../windows/old_machine_bootloader.h | 9 - .../old_machine_bootloader/windows/pyi_main.c | 213 ----- .../monkey_island/cc/resources/bootloader.py | 10 +- .../monkey_island/cc/services/bootloader.py | 6 +- monkey/monkey_island/cc/services/node.py | 2 +- 7 files changed, 12 insertions(+), 1223 deletions(-) delete mode 100644 monkey/infection_monkey/external_tools/old_machine_bootloader/linux/wscript delete mode 100644 monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.c delete mode 100644 monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.h delete mode 100644 monkey/infection_monkey/external_tools/old_machine_bootloader/windows/pyi_main.c diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/linux/wscript b/monkey/infection_monkey/external_tools/old_machine_bootloader/linux/wscript deleted file mode 100644 index b66ff74cb..000000000 --- a/monkey/infection_monkey/external_tools/old_machine_bootloader/linux/wscript +++ /dev/null @@ -1,806 +0,0 @@ -# -*- mode: python -*- vim: filetype=python -# ----------------------------------------------------------------------------- -# Copyright (c) 2014-2020, PyInstaller Development Team. -# -# Distributed under the terms of the GNU General Public License (version 2 -# or later) with exception for distributing the bootloader. -# -# The full license is in the file COPYING.txt, distributed with this software. -# -# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception) -# ----------------------------------------------------------------------------- - - -""" -Bootloader building script. -""" - -import os -import platform -import sys -import re -import sysconfig -from waflib.Configure import conf -from waflib import Logs, Utils, Options -from waflib.Build import BuildContext, InstallContext - -# The following two variables are used by the target "waf dist" -VERSION = 'nodist' -APPNAME = 'PyInstallerBootloader' - -# These variables are mandatory ('/' are converted automatically) -top = '.' -out = 'build' - -# Build variants of bootloader. -# PyInstaller provides debug/release bootloaders and console/windowed -# variants. -# Every variant has different exe name. -variants = { - 'debug': 'run_d', - 'debugw': 'runw_d', - 'release': 'run', - 'releasew': 'runw', -} - -# PyInstaller only knows platform.system(), so we need to -# map waf's DEST_OS to these values. -DESTOS_TO_SYSTEM = { - 'linux': 'Linux', - 'freebsd': 'FreeBSD', - 'openbsd': 'OpenBSD', - 'win32': 'Windows', - 'darwin': 'Darwin', - 'sunos': platform.system(), ## FIXME: inhibits cross-compile - 'hpux': 'HP-UX', - 'aix': 'AIX', -} - -# Map from platform.system() to waf's DEST_OS -SYSTEM_TO_BUILDOS = { - 'Linux': 'linux', - 'FreeBSD': 'freebsd', - 'Windows': 'win32', - 'Darwin': 'darwin', - 'Solaris': 'sunos', - 'SunOS': 'sunos', - 'HP-UX': 'hpux', - 'AIX': 'aix', -} - -# waf's name of the system we are building on -BUILD_OS = SYSTEM_TO_BUILDOS.get(platform.system(), platform.system()) - -is_cross = None - - -def machine(): - """ - Differenciate path to bootloader with machine name if necessary. - - Machine name in bootloader is necessary only for non-x86 architecture. - """ - # IMPORTANT: Keep this in line with PyInstaller.compat.machine() - mach = platform.machine() - if mach.startswith('arm'): - return 'arm' - elif mach.startswith('aarch'): - return 'aarch' - else: - # Assume x86/x86_64 machine. - return None - - -def assoc_programm(ctx, name): - # Search other programs we need, based on the name of the compiler - # (replace "gcc" or "clang" by the tool name) - cc = ctx.env.CC[0] - prog = re.sub(r'(^|^.*-)(gcc|clang)(-.*|\.exe$|$)', - r'\1' + name + r'\3', - os.path.basename(cc)) - prog = os.path.join(os.path.dirname(cc), prog) - # waf unconditionally appends the extension even if there is one already. - # So we need to remove the existing one here. - exts = Utils.is_win32 and r'\.(exe|com|bat|cmd)$' or r'\.(sh|pl|py)$' - prog = re.sub(exts, '', prog) - return prog - - -def options(ctx): - ctx.load('compiler_c') - - ctx.add_option('--debug', - action='store_true', - help='Include debugging info for GDB.', - default=False, - dest='debug') - ctx.add_option('--leak-detector', - action='store_true', - help='Link with Boehm garbage collector to detect memory leaks.', - default=False, - dest='boehmgc') - ctx.add_option('--clang', - action='store_true', - help='Try to find clang C compiler instead of gcc.', - default=False, - dest='clang') - ctx.add_option('--gcc', - action='store_true', - help='Try to find GNU C compiler.', - default=False, - dest='gcc') - ctx.add_option('--target-arch', - action='store', - help='Target architecture format (32bit, 64bit). ' - 'This option allows to build 32bit bootloader with 64bit compiler ' - 'and 64bit Python.', - default=None, - dest='target_arch') - ctx.add_option('--show-warnings', action='store_true', - help='Make gcc print out the warnings we consider as ' - 'being non-fatal. All other warinings are still ' - 'treated as errors. Mind deleting the `build` ' - 'directory first to ensure all files are actually ' - 'recompiled.', - dest='show_warnings') - - grp = ctx.add_option_group('Linux Standard Base (LSB) compliance', - 'These options have effect only on Linux.') - grp.add_option('--no-lsb', - action='store_true', - help=('Build "normal" (non-LSB-compliant) bootloader.' - '(this is the default).'), - default=True, - dest='nolsb') - grp.add_option('--lsb', - action='store_false', - help='Build LSB compliant bootloader.', - default=True, - dest='nolsb') - grp.add_option('--lsbcc-path', - action='store', - help='Path where to look for lsbcc. By default PATH is ' - 'searched for lsbcc otherwise is tried file ' - '/opt/lsb/bin/lsbcc. [Default: lsbcc]', - default=None, - dest='lsbcc_path') - grp.add_option('--lsb-target-version', - action='store', - help='Specify LSB target version [Default: 4.0]', - default='4.0', - dest='lsb_version') - - -@conf -def set_lsb_compiler(ctx): - """ - Build LSB (Linux Standard Base) bootloader. - - LSB bootloader allows to build bootloader binary that is compatible - with almost every Linux distribution. - 'lsbcc' just wraps gcc in a special way. - """ - Logs.pprint('CYAN', 'Building LSB (Linux Standard Base) bootloader.') - lsb_paths = ['/opt/lsb/bin'] - if ctx.options.lsbcc_path: - lsb_paths.insert(0, ctx.options.lsbcc_path) - try: - ctx.find_program('lsbcc', var='LSBCC', path_list=lsb_paths) - except ctx.errors.ConfigurationError: - # Fail hard and print warning if lsbcc is not available. - # if not ctx.env.LSBCC: - ctx.fatal('LSB (Linux Standard Base) tools >= 4.0 are ' - 'required.\nTry --no-lsb option if not interested in ' - 'building LSB binary.') - - # lsbcc as CC compiler - ctx.env.append_value('CFLAGS', '--lsb-cc=%s' % ctx.env.CC[0]) - ctx.env.append_value('LINKFLAGS', '--lsb-cc=%s' % ctx.env.CC[0]) - ctx.env.CC = ctx.env.LSBCC - ctx.env.LINK_CC = ctx.env.LSBCC - ## check LSBCC flags - # --lsb-besteffort - binary will work on platforms without LSB stuff - # --lsb-besteffort - available in LSB build tools >= 4.0 - ctx.check_cc(cflags='--lsb-besteffort', - msg='Checking for LSB build tools >= 4.0', - errmsg='LSB >= 4.0 is required', mandatory=True) - ctx.env.append_value('CFLAGS', '--lsb-besteffort') - ctx.env.append_value('LINKFLAGS', '--lsb-besteffort') - # binary compatibility with a specific LSB version - # LSB 4.0 can generate binaries compatible with 3.0, 3.1, 3.2, 4.0 - # however because of using function 'mkdtemp', loader requires - # using target version 4.0 - lsb_target_flag = '--lsb-target-version=%s' % ctx.options.lsb_version - ctx.env.append_value('CFLAGS', lsb_target_flag) - ctx.env.append_value('LINKFLAGS', lsb_target_flag) - - -def check_sizeof_pointer(ctx): - def check(type, expected): - # test code taken from autoconf resp. Scons: this is a pretty clever - # hack to find that a type is of a given size using only compilation. - # This speeds things up quite a bit compared to straightforward code - # actually running the code. - # Plus: This works cross :-) - fragment = ''' - int main() { - static int test_array[1 - 2 * !(sizeof(%s) == %d)]; - test_array[0] = 0; - return 0; - }''' % (type, expected) - return ctx.check_cc(fragment=fragment, execute=False, mandatory=False) - - ctx.start_msg("Checking size of pointer") - for size in (4, 8): - if check("void *", size): - break - else: - ctx.end_msg(False) - ctx.fatal( - "Couldn't determine pointer size, only 32 or 64 bit are supported. Please use `--target-arch' to set the pointer size.") - ctx.end_msg(size) - return size - - -@conf -def detect_arch(ctx): - """ - Handle options --target-arch or use the same - architecture as the compiler. - """ - try: - system = DESTOS_TO_SYSTEM[ctx.env.DEST_OS] - except KeyError: - ctx.fatal('Unrecognized target system: %s' % ctx.env.DEST_OS) - - # Get arch values either from CLI or detect it. - if ctx.options.target_arch: - arch = ctx.options.target_arch - ctx.msg('Platform', '%s-%s manually chosen' % (system, arch)) - ctx.env.ARCH_FLAGS_REQUIRED = True - else: - # PyInstaller uses the result of platform.architecture() to determine - # the bits and this is testing the pointer size (via module struct). - # We do the same here. - arch = "%sbit" % (8 * check_sizeof_pointer(ctx)) - ctx.msg('Platform', '%s-%s detected based on compiler' % (system, arch)) - ctx.env.ARCH_FLAGS_REQUIRED = False - if not arch in ('32bit', '64bit'): - ctx.fatal('Unrecognized target architecture: %s' % arch) - - # Pass return values as environment variables. - ctx.env.PYI_ARCH = arch # '32bit' or '64bit' - ctx.env.PYI_SYSTEM = system - - -@conf -def set_arch_flags(ctx): - """ - Set properly architecture flag (32 or 64 bit) cflags for compiler - and CPU target for compiler. - """ - - def check_arch_cflag(cflag32, cflag64): - cflag = cflag32 if ctx.env.PYI_ARCH == '32bit' else cflag64 - if ctx.check_cc(cflags=cflag, - features='c', # only compile, don't link - mandatory=ctx.env.ARCH_FLAGS_REQUIRED): - ctx.env.append_value('CFLAGS', cflag) - if ctx.check_cc(linkflags=cflag, - mandatory=ctx.env.ARCH_FLAGS_REQUIRED): - ctx.env.append_value('LINKFLAGS', cflag) - - if ctx.env.DEST_OS == 'win32' and ctx.env.CC_NAME == 'msvc': - # Set msvc linkflags based on architecture. - if ctx.env.PYI_ARCH == '32bit': - ctx.env['MSVC_TARGETS'] = ['x86'] - ctx.env.append_value('LINKFLAGS', '/MACHINE:X86') - # Set LARGE_ADDRESS_AWARE_FLAG to True. - # On Windows this allows 32bit apps to use 4GB of memory and - ctx.env.append_value('LINKFLAGS', '/LARGEADDRESSAWARE') - elif ctx.env.PYI_ARCH == '64bit': - ctx.env['MSVC_TARGETS'] = ['x64'] - ctx.env.append_value('LINKFLAGS', '/MACHINE:X64') - - # Enable 64bit porting warnings and other warnings too. - ctx.env.append_value('CFLAGS', '/W3') - # We use SEH exceptions in winmain.c; make sure they are activated. - ctx.env.append_value('CFLAGS', '/EHa') - - # Ensure proper architecture flags on Mac OS X. - elif ctx.env.DEST_OS == 'darwin': - # Default compiler on Mac OS X is Clang. - # Clang does not have flags '-m32' and '-m64'. - if ctx.env.PYI_ARCH == '32bit': - mac_arch = ['-arch', 'i386'] - else: - mac_arch = ['-arch', 'x86_64'] - ctx.env.append_value('CFLAGS', mac_arch) - ctx.env.append_value('CXXFLAGS', mac_arch) - ctx.env.append_value('LINKFLAGS', mac_arch) - - # AIX specific flags - elif ctx.env.DEST_OS == 'aix': - if ctx.env.CC_NAME == 'gcc': - check_arch_cflag('-maix32', '-maix64') - else: - # We are using AIX/xlc compiler - check_arch_cflag('-q32', '-q64') - - elif ctx.env.DEST_OS == 'sunos': - if ctx.env.CC_NAME == 'gcc': - check_arch_cflag('-m32', '-m64') - else: - # We use SUNWpro C compiler - check_arch_cflag('-xarch=generic', '-xarch=v9') - - elif ctx.env.DEST_OS == 'hpux': - if ctx.env.CC_NAME == 'gcc': - check_arch_cflag('-milp32', '-mlp64') - else: - # We use xlc compiler - pass - - # Other compiler - not msvc. - else: - if machine() == 'sw_64': - # The gcc has no '-m64' option under sw64 machine, but the - # __x86_64__ macro needs to be defined - conf.env.append_value('CCDEFINES', '__x86_64__') - # This ensures proper compilation with 64bit gcc and 32bit Python - # or vice versa or with manually choosen --target-arch. - # Option -m32/-m64 has to be passed to cflags and linkflages. - else: - check_arch_cflag('-m32', '-m64') - if ctx.env.PYI_ARCH == '32bit' and ctx.env.DEST_OS == 'win32': - # Set LARGE_ADDRESS_AWARE_FLAG to True. - # On Windows this allows 32bit apps to use 4GB of memory and - # not only 2GB. - # TODO verify if this option being as default might cause any side - # effects. - ctx.env.append_value('LINKFLAGS', '-Wl,--large-address-aware') - - # We need to pass architecture switch to the 'windres' tool. - if ctx.env.DEST_OS == 'win32' and ctx.env.CC_NAME != 'msvc': - if ctx.env.PYI_ARCH == '32bit': - ctx.env.WINRCFLAGS = ['--target=pe-i386'] - else: - ctx.env.WINRCFLAGS = ['--target=pe-x86-64'] - # Since WINRC config changed above, must set other options as well - ctx.env.WINRC_TGT_F = '-o' - ctx.env.WINRC_SRC_F = '-i' - - ctx.env.append_value('LINKFLAGS', '/usr/local/lib/libcurl.a') - - -def configure(ctx): - ctx.msg('Python Version', sys.version.replace(os.linesep, '')) - # For MSVC the target arch must already been set when the compiler is - # searched. - if ctx.options.target_arch == '32bit': - ctx.env['MSVC_TARGETS'] = ['x86'] - elif ctx.options.target_arch == '64bit': - ctx.env['MSVC_TARGETS'] = ['x64'] - ### C compiler - - # Allow to use Clang if preferred. - if ctx.options.clang: - ctx.load('clang') - # Allow to use gcc if preferred. - elif ctx.options.gcc: - ctx.load('gcc') - else: - ctx.load('compiler_c') # Any available C compiler. - # LSB compatible bootloader only for Linux and without cli option --no-lsb. - if ctx.env.DEST_OS == 'linux' and not ctx.options.nolsb: - ctx.set_lsb_compiler() - - global is_cross - is_cross = (BUILD_OS != ctx.env.DEST_OS) - - if is_cross: - ctx.msg('System', 'Assuming cross-compilation for %s' % - DESTOS_TO_SYSTEM[ctx.env.DEST_OS]) - - if ctx.env.DEST_OS in ('freebsd', 'hpux', 'sunos'): - # For these FreeBSD and HP-UX we determine some settings from - # Python's sysconfig. For cross-compiling somebody needs to - # implement options to overwrite these values as they may be - # wrong. - # For SunOS/Solaris mappgin DEST_OS to system is not yet known. - ctx.fatal('Cross-compiling for target %s is not yet supported. ' - 'If you want this feature, please help implementing. ' - 'See the wscript file for details.' % ctx.env.DEST_OS) - - # Detect architecture after completing compiler search - ctx.detect_arch() - - # Set proper architecture and CPU for C compiler - ctx.set_arch_flags() - - ### Other Tools - - if ctx.env.DEST_OS == 'win32': - # Do not embed manifest file when using MSVC (Visual Studio). - # Manifest file will be added in the phase of packaging python - # application by PyInstaller. - ctx.env.MSVC_MANIFEST = False - - if ctx.env.CC_NAME != 'msvc': - # Load tool to process *.rc* files for C/C++ like icon for exe - # files. For msvc waf loads this tool automatically - ctx.find_program([assoc_programm(ctx, 'windres')], var='WINRC') - ctx.load('winres') - - ### C Compiler optimizations. - # TODO Set proper optimization flags for MSVC (Visual Studio). - - if ctx.options.debug: - if ctx.env.DEST_OS == 'win32' and ctx.env.CC_NAME == 'msvc': - # Include information for debugging in MSVC/msdebug - ctx.env.append_value('CFLAGS', '/Z7') - ctx.env.append_value('CFLAGS', '/Od') - ctx.env.append_value('LINKFLAGS', '/DEBUG') - else: - # Include gcc debugging information for debugging in GDB. - ctx.env.append_value('CFLAGS', '-g') - else: - if ctx.env.DEST_OS != 'sunos': - ctx.env.append_value('CFLAGS', '-O2') - else: - # Solaris SUN CC doesn't support '-O2' flag - ctx.env.append_value('CFLAGS', '-O') - - if ctx.env.CC_NAME == 'gcc': - # !! These flags are gcc specific - # Turn on all warnings to improve code quality and avoid - # errors. Unused variables and unused functions are still - # accepted to avoid even more conditional code. - # If you are ever tempted to change this, review the commit - # history of this place first. - ctx.env.append_value('CFLAGS', ['-Wall', - '-Werror', - '-Wno-error=unused-variable', - '-Wno-error=unused-function']) - if not ctx.options.show_warnings: - ctx.env.append_value('CFLAGS', ['-Wno-unused-variable', - '-Wno-unused-function']) - - ### Defines, Includes - - if not ctx.env.DEST_OS == 'win32': - # Defines common for Unix and Unix-like platforms. - # For details see: - # http://man.he.net/man7/feature_test_macros - ctx.env.append_value('DEFINES', '_REENTRANT') - - # mkdtemp() is available only if _BSD_SOURCE is defined. - ctx.env.append_value('DEFINES', '_BSD_SOURCE') - - if ctx.env.DEST_OS == 'linux': - # Recent GCC 5.x complains about _BSD_SOURCE under Linux: - # _BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE - ctx.env.append_value('DEFINES', '_DEFAULT_SOURCE') - - # TODO What other platforms support _FORTIFY_SOURCE macro? OS X? - # TODO OS X's CLang appears to support this macro as well. See: - # https://marc.info/?l=cfe-dev&m=122032133830183 - - # For security, enable the _FORTIFY_SOURCE macro detecting buffer - # overflows in various string and memory manipulation functions. - if ctx.options.debug: - ctx.env.append_value('CFLAGS', '-U_FORTIFY_SOURCE') - elif ctx.env.CC_NAME == 'gcc': - # Undefine this macro if already defined by default to avoid - # "macro redefinition" errors. - ctx.env.append_value('CFLAGS', '-U_FORTIFY_SOURCE') - - # Define this macro. - ctx.env.append_value('DEFINES', '_FORTIFY_SOURCE=2') - # On Mac OS X, mkdtemp() is available only with _DARWIN_C_SOURCE. - elif ctx.env.DEST_OS == 'darwin': - ctx.env.append_value('DEFINES', '_DARWIN_C_SOURCE') - - if ctx.env.DEST_OS == 'win32': - ctx.env.append_value('DEFINES', 'WIN32') - ctx.env.append_value('CPPPATH', '../zlib') - - elif ctx.env.DEST_OS == 'sunos': - ctx.env.append_value('DEFINES', 'SUNOS') - if ctx.env.CC_NAME == 'gcc': - # On Solaris using gcc the linker options for shared and static - # libraries are slightly different from other platforms. - ctx.env['SHLIB_MARKER'] = '-Wl,-Bdynamic' - ctx.env['STLIB_MARKER'] = '-Wl,-Bstatic' - # On Solaris using gcc, the compiler needs to be gnu99 - ctx.env.append_value('CFLAGS', '-std=gnu99') - - elif ctx.env.DEST_OS == 'aix': - ctx.env.append_value('DEFINES', 'AIX') - # On AIX some APIs are restricted if _ALL_SOURCE is not defined. - # In the case of PyInstaller, we need the AIX specific flag RTLD_MEMBER - # for dlopen() which is used to load a shared object from a library - # archive. We need to load the Python library like this: - # dlopen("libpython2.7.a(libpython2.7.so)", RTLD_MEMBER) - ctx.env.append_value('DEFINES', '_ALL_SOURCE') - - # On AIX using gcc the linker options for shared and static - # libraries are slightly different from other platforms. - ctx.env['SHLIB_MARKER'] = '-Wl,-bdynamic' - ctx.env['STLIB_MARKER'] = '-Wl,-bstatic' - - elif ctx.env.DEST_OS == 'hpux': - ctx.env.append_value('DEFINES', 'HPUX') - if ctx.env.CC_NAME == 'gcc': - if ctx.env.PYI_ARCH == '32bit': - ctx.env.append_value('LIBPATH', '/usr/local/lib/hpux32') - ctx.env.append_value('STATICLIBPATH', '/usr/local/lib/hpux32') - else: - ctx.env.append_value('LIBPATH', '/usr/local/lib/hpux64') - ctx.env.append_value('STATICLIBPATH', '/usr/local/lib/hpux64') - - - elif ctx.env.DEST_OS == 'darwin': - # OS X 10.7 might not understand some load commands. - # The following variable fixes 10.7 compatibility. - # According to OS X doc this variable is equivalent to gcc option: - # -mmacosx-version-min=10.7 - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.7' - - ### Libraries - - if ctx.env.DEST_OS == 'win32': - if ctx.env.CC_NAME == 'msvc': - ctx.check_libs_msvc('user32 comctl32 kernel32 advapi32 ws2_32', - mandatory=True) - else: - ctx.check_cc(lib='user32', mandatory=True) - ctx.check_cc(lib='comctl32', mandatory=True) - ctx.check_cc(lib='kernel32', mandatory=True) - ctx.check_cc(lib='advapi32', mandatory=True) - ctx.check_cc(lib='ws2_32', mandatory=True) - else: - # Mac OS X and FreeBSD do not need libdl. - # https://stackoverflow.com/questions/20169660/where-is-libdl-so-on-mac-os-x - if ctx.env.DEST_OS not in ('darwin', 'freebsd', 'openbsd'): - ctx.check_cc(lib='dl', mandatory=True) - if ctx.env.DEST_OS == 'freebsd' and sysconfig.get_config_var('HAVE_PTHREAD_H'): - # On FreeBSD if python has threads: libthr needs to be loaded in - # the main process, so the bootloader needs to be link to thr. - ctx.check_cc(lib='thr', mandatory=True) - ctx.check_cc(lib='z', mandatory=True, uselib_store='Z') - # This uses Boehm GC to manage memory - it replaces malloc() / free() - # functions. Some messages are printed if memory is not deallocated. - if ctx.options.boehmgc: - ctx.check_cc(lib='gc', mandatory=True) - ctx.env.append_value('DEFINES', 'PYI_LEAK_DETECTOR') - ctx.env.append_value('DEFINES', 'GC_FIND_LEAK') - ctx.env.append_value('DEFINES', 'GC_DEBUG') - ctx.env.append_value('DEFINES', 'SAVE_CALL_CHAIN') - - ### Functions - - # The old ``function_name`` parameter to ``check_cc`` is no longer - # supported. This code is based on old waf source at - # https://gitlab.com/ita1024/waf/commit/62fe305d04ed37b1be1a3327a74b2fee6c458634#255b2344e5268e6a34bedd2f8c4680798344fec7. - SNIP_FUNCTION = ''' - #include <%s> - - int main(int argc, char **argv) { - void (*p)(); - - (void)argc; (void)argv; - p=(void(*)())(%s); - return !p; - } -''' - # OS support for these functions varies. - for header, function_name in (('stdlib.h', 'unsetenv'), - ('stdlib.h', 'mkdtemp'), - ('string.h', 'strndup'), - ('string.h', 'strnlen')): - ctx.check( - fragment=SNIP_FUNCTION % (header, function_name), - mandatory=False, - define_name=ctx.have_define(function_name), - msg='Checking for function %s' % function_name) - # ctx.check(lib=["crypto", "ssl", "curl"]) - ### CFLAGS - - if ctx.env.DEST_OS == 'win32': - if ctx.env.CC_NAME == 'msvc': - # Use Unicode entry point wmain/wWinMain and wchar_t WinAPI - ctx.env.append_value('CFLAGS', '-DUNICODE') - ctx.env.append_value('CFLAGS', '-D_UNICODE') - # set XP target as minimal target OS ver. when using Windows w/MSVC - # https://blogs.msdn.microsoft.com/vcblog/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012/ - ctx.env.append_value('LINKFLAGS', '/SUBSYSTEM:CONSOLE,%s' % ( - '5.01' if ctx.env.PYI_ARCH == '32bit' else '5.02')) - else: - # Use Visual C++ compatible alignment - ctx.env.append_value('CFLAGS', '-mms-bitfields') - - # Define UNICODE and _UNICODE for wchar_t WinAPI - ctx.env.append_value('CFLAGS', '-municode') - - # Use Unicode entry point wmain/wWinMain - ctx.env.append_value('LINKFLAGS', '-municode') - if ctx.env.DEST_OS == 'darwin': - ctx.env.append_value('CFLAGS', '-mmacosx-version-min=10.7') - ctx.env.append_value('LINKFLAGS', '-mmacosx-version-min=10.7') - - # On linux link only with needed libraries. - # -Wl,--as-needed is on some platforms detected during configure but - # fails during build. (Mac OS X, Solaris, AIX) - if ctx.env.DEST_OS == 'linux' and ctx.check_cc(cflags='-Wl,--as-needed'): - ctx.env.append_value('LINKFLAGS', '-Wl,--as-needed') - - if ctx.env.CC_NAME != 'msvc': - # This tool allows reducing the size of executables. - ctx.find_program([assoc_programm(ctx, 'strip')], var='STRIP') - ctx.load('strip', tooldir='tools') - # There is a strip flag for AIX environment - if ctx.env.DEST_OS == 'aix': - if ctx.env.PYI_ARCH == '32bit': - ctx.env.append_value('STRIPFLAGS', '-X32') - elif ctx.env.PYI_ARCH == '64bit': - ctx.env.append_value('STRIPFLAGS', '-X64') - - ctx.env.append_value('LINKFLAGS', '-pthread') - - def windowed(name, baseenv): - """Setup windowed environment based on `baseenv`.""" - ctx.setenv(name, baseenv) # Inherit from `baseenv`. - ctx.env.append_value('DEFINES', 'WINDOWED') - - if ctx.env.DEST_OS == 'win32': - if ctx.env.CC_NAME != 'msvc': - # For MinGW disable console window on Windows - MinGW option - # TODO Is it necessary to have -mwindows for C and LINK flags? - ctx.env.append_value('LINKFLAGS', '-mwindows') - ctx.env.append_value('CFLAGS', '-mwindows') - else: - _link_flags = ctx.env._get_list_value_for_modification('LINKFLAGS') - _subsystem = [x for x in _link_flags if x.startswith('/SUBSYSTEM:')] - for parameter in _subsystem: - _link_flags.remove(parameter) - ctx.env.append_value('LINKFLAGS', '/SUBSYSTEM:WINDOWS,%s' % ( - '5.01' if ctx.env.PYI_ARCH == '32bit' else '5.02')) - elif ctx.env.DEST_OS == 'darwin': - # To support catching AppleEvents and running as ordinary OSX GUI - # app, we have to link against the Carbon framework. - # This linkage only needs to be there for the windowed bootloaders. - ctx.env.append_value('LINKFLAGS', '-framework') - ctx.env.append_value('LINKFLAGS', 'Carbon') - # TODO Do we need to link with this framework? - # conf.env.append_value('LINKFLAGS', '-framework') - # conf.env.append_value('LINKFLAGS', 'ApplicationServices') - - ### DEBUG and RELEASE environments - basic_env = ctx.env - - ## setup DEBUG environment - ctx.setenv('debug', basic_env) # Ensure env contains shared values. - debug_env = ctx.env - # This defines enable verbose console output of the bootloader. - ctx.env.append_value('DEFINES', ['LAUNCH_DEBUG']) - ctx.env.append_value('DEFINES', 'NDEBUG') - - ## setup windowed DEBUG environment - windowed('debugw', debug_env) - - ## setup RELEASE environment - ctx.setenv('release', basic_env) # Ensure env contains shared values. - release_env = ctx.env - ctx.env.append_value('DEFINES', 'NDEBUG') - - ## setup windowed RELEASE environment - windowed('releasew', release_env) - - -# TODO Use 'strip' command to decrease the size of compiled bootloaders. -def build(ctx): - if not ctx.variant: - ctx.fatal('Call "python waf all" to compile all bootloaders.') - exe_name = variants[ctx.variant] - - install_path = os.path.join(os.getcwd(), '../PyInstaller/bootloader', - ctx.env.PYI_SYSTEM + "-" + ctx.env.PYI_ARCH) - install_path = os.path.normpath(install_path) - - if machine(): - install_path += '-' + machine() - - if not ctx.env.LIB_Z: - # If the operating system does not provide zlib, build our own. The - # configure phase defines whether or not zlib is mandatory for a - # platform. - ctx.stlib( - source=ctx.path.ant_glob('zlib/*.c'), - target='static_zlib', - name='Z', - includes='zlib') - - # By default strip final executables to make them smaller. - features = 'strip' - if ctx.env.CC_NAME == 'msvc': - # Do not strip bootloaders when using MSVC. - features = '' - - if ctx.env.DEST_OS == 'win32': - # Use different RC file (icon) for console/windowed mode - remove '_d' - icon_rc = 'windows/' + exe_name.replace('_d', '') + '.rc' - # On Windows we need to link library zlib statically. - ctx.program( - source=ctx.path.ant_glob(['src/*.c', icon_rc]), - target=exe_name, - install_path=install_path, - use='USER32 COMCTL32 KERNEL32 ADVAPI32 WS2_32 Z', - includes='src windows zlib', - features=features, - ) - else: - # Linux, Darwin (MacOSX), ... - # Only the libs found will actually be used, so it's safe to list all - # here. The decision if a lib is required for a specific platform is - # made in the configure phase. - libs = ['DL', 'M', 'Z', # 'z' - zlib, 'm' - math, - 'THR', 'pthread'] # may be used on FreBSD - # staticlibs = ['curl'] - staticlibs = ['curl', 'ssl', 'crypto', 'z'] - if ctx.env.DEST_OS == 'aix': - # link statically with zlib, case sensitive - libs.remove('Z') - staticlibs.append('z') - if ctx.options.boehmgc: - libs.append('GC') - - ctx.program( - source=ctx.path.ant_glob('src/*.c'), - target=exe_name, - includes='src', - use=libs, - stlib=staticlibs, - stlibpath=['/usr/local/lib/', '/usr/lib/x86_64-linux-gnu/'], - install_path=install_path, - features=features) - - -class make_all(BuildContext): - """ - Do build and install in one step. - """ - cmd = 'make_all' - - def execute_build(ctx): - Options.commands = ['build_debug', 'build_release'] - # On Windows and Mac OS X we also need console/windowed bootloaders. - # On other platforms they make no sense. - if ctx.env.DEST_OS in ('win32', 'darwin'): - Options.commands += ['build_debugw', 'build_releasew'] - # Install bootloaders. - Options.commands += ['install_debug', 'install_release'] - if ctx.env.DEST_OS in ('win32', 'darwin'): - Options.commands += ['install_debugw', 'install_releasew'] - - -def all(ctx): - """ - Do configure, build and install in one step. - """ - # `all` is run prior to `configure`, thus it does not get a build context. - # Thus another command `make_all` is required which gets the build - # context and can make decisions based on the outcome of `configure`. - Options.commands = ['distclean', 'configure', 'make_all'] - - -# Set up building several variants of bootloader. -for x in variants: - class BootloaderContext(BuildContext): - cmd = 'build' + '_' + x - variant = x - - - class BootloaderInstallContext(InstallContext): - cmd = 'install' + '_' + x - variant = x diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.c b/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.c deleted file mode 100644 index d62ad1796..000000000 --- a/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.c +++ /dev/null @@ -1,189 +0,0 @@ -#include -#include -#include -#include -#include - -#pragma comment ( lib, "wininet" ) -#pragma comment ( lib, "Wininet.lib" ) - -#define minVersion 6.1 - -// Replaces a single occurrence of substring -wchar_t* replaceSubstringOnce(wchar_t* str, wchar_t* to_be_replaced, wchar_t* replacement) { - size_t str_size = wcslen(str); - size_t to_be_replaced_size = wcslen(to_be_replaced); - size_t replacement_size = wcslen(replacement); - size_t result_size = str_size - to_be_replaced_size + replacement_size; - wchar_t *result_string = (wchar_t*)malloc(sizeof(wchar_t) * (result_size)); - - for (int i = 0; i < (int)result_size; i++ ){ - result_string[i] = str[i]; - if(str[i] == to_be_replaced[0] && replacement_size != 0){ - BOOL should_replace = TRUE; - // Check if started iterating over string that will be replaced - for (int j = i; j < (i + to_be_replaced_size); j++){ - if(str[j] != to_be_replaced[j - i]) { - should_replace = FALSE; - } - } - // If string that needs to be replaced is found - replace it - if (should_replace) { - for (int j = i; j < (i + replacement_size); j++){ - result_string[j] = replacement[j - i]; - } - i += to_be_replaced_size; - } - } - } - result_string[result_size] = '\0'; - return result_string; -} - -struct versionInfo { - DWORD MajorVersion; - DWORD MinorVersion; - DWORD Build; - wchar_t* versionStr; -}; - -struct versionInfo getWindowsVersion(int size){ - - DWORD dwVersion = 0; - DWORD dwMajorVersion = 0; - DWORD dwMinorVersion = 0; - DWORD dwBuild = 0; - - dwVersion = GetVersion(); - - // Get the Windows version. - dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); - dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); - - // Get the build number. - if (dwVersion < 0x80000000) - dwBuild = (DWORD)(HIWORD(dwVersion)); - - wchar_t* versionStr = (wchar_t*)malloc(sizeof(wchar_t) * (size)); - snprintf(versionStr, - size, - "W%d.%d (%d)\n", - dwMajorVersion, - dwMinorVersion, - dwBuild); - struct versionInfo winVersionInfo = {dwMajorVersion, dwMinorVersion, dwBuild, versionStr}; - return winVersionInfo; -} - -int sendRequest(wchar_t* server, wchar_t* tunnel, BOOL tunnelUsed, wchar_t* windowsVersion){ - - wchar_t _page[] = L"/"; - HINTERNET hInternet, hConnect, hRequest; - DWORD bytes_read; - int finished = 0; - if (tunnelUsed){ - hInternet = InternetOpen("Mozilla/5.0", INTERNET_OPEN_TYPE_PROXY, tunnel, NULL, 0); - } else { - hInternet = InternetOpen("Mozilla/5.0", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); - } - - if (hInternet == NULL) { - printf("InternetOpen error : <%lu>\n", GetLastError()); - return 1; - } - - hConnect = InternetConnect(hInternet, server, 5001, "", "", INTERNET_SERVICE_HTTP, 0, 0); - if (hConnect == NULL) { - printf("hConnect error : <%lu>\n", GetLastError()); - return 1; - } - - hRequest = HttpOpenRequest(hConnect, L"POST", _page, NULL, NULL, NULL, NULL, 0); - if (hRequest == NULL) { - printf("hRequest error : <%lu>\n", GetLastError()); - return 1; - } - - BOOL isSend = HttpSendRequest(hRequest, NULL, 0, windowsVersion, sizeof(windowsVersion)); - if (!isSend){ - printf("HttpSendRequest error : (%lu)\n", GetLastError()); - return 1; - } - DWORD dwFileSize; - dwFileSize = BUFSIZ; - - char buffer[BUFSIZ+1]; - - while (1) { - DWORD dwBytesRead; - BOOL bRead; - - bRead = InternetReadFile( - hRequest, - buffer, - dwFileSize + 1, - &dwBytesRead); - - if (dwBytesRead == 0) break; - - if (!bRead) { - printf("InternetReadFile error : <%lu>\n", GetLastError()); - } - else { - buffer[dwBytesRead] = 0; - printf("Retrieved %lu data bytes: %s\n", dwBytesRead, buffer); - } - } - // close request - InternetCloseHandle(hRequest); - InternetCloseHandle(hConnect); - InternetCloseHandle(hInternet); - - return strcmp(buffer, "{\"status\":\"OK\"}\n"); - -} - - -int ping_island(int argc, char * argv[]) -{ - - struct versionInfo windowsVersion = getWindowsVersion(20); - - // Find which argument is tunnel flag - int i, tunnel_i=0, server_i=0; - char t_flag[] = "-t"; - char s_flag[] = "-s"; - for(i=1;i minVersion) { - return 0; - } else { - return 1; - } -} diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.h b/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.h deleted file mode 100644 index 8ccad4917..000000000 --- a/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/old_machine_bootloader.h +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include -#include -#include - -#pragma comment( lib, "wininet" ) -#pragma comment (lib, "Wininet.lib") - -int ping_island(int argc, char * argv[]); diff --git a/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/pyi_main.c b/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/pyi_main.c deleted file mode 100644 index 4dbbe2062..000000000 --- a/monkey/infection_monkey/external_tools/old_machine_bootloader/windows/pyi_main.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - * **************************************************************************** - * Copyright (c) 2013-2020, PyInstaller Development Team. - * - * Distributed under the terms of the GNU General Public License (version 2 - * or later) with exception for distributing the bootloader. - * - * The full license is in the file COPYING.txt, distributed with this software. - * - * SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception) - * **************************************************************************** - */ - -/* - * Bootloader for a packed executable. - */ - -/* TODO: use safe string functions */ -#define _CRT_SECURE_NO_WARNINGS 1 - -#ifdef _WIN32 - #include - #include -#else - #include /* PATH_MAX */ -#endif -#include /* FILE */ -#include /* calloc */ -#include /* memset */ - -/* PyInstaller headers. */ -#include "pyi_global.h" /* PATH_MAX for win32 */ -#include "pyi_path.h" -#include "pyi_archive.h" -#include "pyi_utils.h" -#include "pyi_pythonlib.h" -#include "pyi_launch.h" -#include "pyi_win32_utils.h" - -#include "old_machine_bootloader.h" - -#include - - - -#include -#include -#include - -#pragma comment( lib, "wininet" ) -#pragma comment (lib, "Wininet.lib") - - -int -pyi_main(int argc, char * argv[]) -{ - /* archive_status contain status information of the main process. */ - ARCHIVE_STATUS *archive_status = NULL; - char executable[PATH_MAX]; - char homepath[PATH_MAX]; - char archivefile[PATH_MAX]; - int rc = 0; - char *extractionpath = NULL; - wchar_t * dllpath_w; - - int too_old = ping_island(argc, argv); - if (too_old){ - printf("OS too old, quiting."); - return 0; - } - - -#ifdef _MSC_VER - /* Visual C runtime incorrectly buffers stderr */ - setbuf(stderr, (char *)NULL); -#endif /* _MSC_VER */ - - VS("PyInstaller Bootloader 3.x\n"); - - /* TODO create special function to allocate memory for archive status pyi_arch_status_alloc_memory(archive_status); */ - archive_status = (ARCHIVE_STATUS *) calloc(1, sizeof(ARCHIVE_STATUS)); - - if (archive_status == NULL) { - FATAL_PERROR("calloc", "Cannot allocate memory for ARCHIVE_STATUS\n"); - return -1; - - } - - pyi_path_executable(executable, argv[0]); - pyi_path_archivefile(archivefile, executable); - pyi_path_homepath(homepath, executable); - - /* For the curious: - * On Windows, the UTF-8 form of MEIPASS2 is passed to pyi_setenv, which - * decodes to UTF-16 before passing it to the Windows API. So the var's value - * is full unicode. - * - * On OS X/Linux, the MEIPASS2 value is passed as the bytes received from the OS. - * Only Python will care about its encoding, and it is passed to Python using - * PyUnicode_DecodeFSDefault. - */ - - extractionpath = pyi_getenv("_MEIPASS2"); - - /* If the Python program we are about to run invokes another PyInstaller - * one-file program as subprocess, this subprocess must not be fooled into - * thinking that it is already unpacked. Therefore, PyInstaller deletes - * the _MEIPASS2 variable from the environment. - */ - - pyi_unsetenv("_MEIPASS2"); - - VS("LOADER: _MEIPASS2 is %s\n", (extractionpath ? extractionpath : "NULL")); - - if (pyi_arch_setup(archive_status, homepath, &executable[strlen(homepath)])) { - if (pyi_arch_setup(archive_status, homepath, &archivefile[strlen(homepath)])) { - FATALERROR("Cannot open self %s or archive %s\n", - executable, archivefile); - return -1; - } - } - - /* These are used only in pyi_pylib_set_sys_argv, which converts to wchar_t */ - archive_status->argc = argc; - archive_status->argv = argv; - -#if defined(_WIN32) || defined(__APPLE__) - - /* On Windows and Mac use single-process for --onedir mode. */ - if (!extractionpath && !pyi_launch_need_to_extract_binaries(archive_status)) { - VS("LOADER: No need to extract files to run; setting extractionpath to homepath\n"); - extractionpath = homepath; - } - -#endif - -#ifdef _WIN32 - - if (extractionpath) { - /* Add extraction folder to DLL search path */ - dllpath_w = pyi_win32_utils_from_utf8(NULL, extractionpath, 0); - SetDllDirectory(dllpath_w); - VS("LOADER: SetDllDirectory(%s)\n", extractionpath); - free(dllpath_w); - } -#endif /* ifdef _WIN32 */ - - if (extractionpath) { - VS("LOADER: Already in the child - running user's code.\n"); - - /* If binaries were extracted to temppath, - * we pass it through status variable - */ - if (strcmp(homepath, extractionpath) != 0) { - strncpy(archive_status->temppath, extractionpath, PATH_MAX); - if (archive_status->temppath[PATH_MAX-1] != '\0') { - VS("LOADER: temppath exceeds PATH_MAX\n"); - return -1; - } - /* - * Temp path exits - set appropriate flag and change - * status->mainpath to point to temppath. - */ - archive_status->has_temp_directory = true; - strcpy(archive_status->mainpath, archive_status->temppath); - } - - /* Main code to initialize Python and run user's code. */ - pyi_launch_initialize(archive_status); - rc = pyi_launch_execute(archive_status); - pyi_launch_finalize(archive_status); - - } - else { - - /* status->temppath is created if necessary. */ - if (pyi_launch_extract_binaries(archive_status)) { - VS("LOADER: temppath is %s\n", archive_status->temppath); - VS("LOADER: Error extracting binaries\n"); - return -1; - } - - /* Run the 'child' process, then clean up. */ - - VS("LOADER: Executing self as child\n"); - pyi_setenv("_MEIPASS2", - archive_status->temppath[0] != - 0 ? archive_status->temppath : homepath); - - VS("LOADER: set _MEIPASS2 to %s\n", pyi_getenv("_MEIPASS2")); - - if (pyi_utils_set_environment(archive_status) == -1) { - return -1; - } - - /* Transform parent to background process on OSX only. */ - pyi_parent_to_background(); - - /* Run user's code in a subprocess and pass command line arguments to it. */ - rc = pyi_utils_create_child(executable, archive_status, argc, argv); - - VS("LOADER: Back to parent (RC: %d)\n", rc); - - VS("LOADER: Doing cleanup\n"); - - if (archive_status->has_temp_directory == true) { - pyi_remove_temp_path(archive_status->temppath); - } - pyi_arch_status_free_memory(archive_status); - - } - return rc; -} diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index 82be595c7..1094b139b 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -13,11 +13,15 @@ class Bootloader(flask_restful.Resource): def post(self, **kw): data = Bootloader.parse_bootloader_request(request.data) resp = BootloaderService.parse_bootloader_data(data) - return make_response({"status": "OK"}, 200) + if resp: + return make_response({"status": "RUN"}, 200) + else: + return make_response({"status": "ABORT"}, 200) @staticmethod def parse_bootloader_request(request_data: bytes) -> Dict[str, str]: parsed_data = json.loads(request_data.decode().replace("\n", "") - .replace("NAME=\"", "") - .replace("\"\"", "\"")) + .replace("NAME=\"", "") + .replace("\"\"", "\"") + .replace("\":\",", "\":\"\",")) return parsed_data diff --git a/monkey/monkey_island/cc/services/bootloader.py b/monkey/monkey_island/cc/services/bootloader.py index d1a9eead2..92e852409 100644 --- a/monkey/monkey_island/cc/services/bootloader.py +++ b/monkey/monkey_island/cc/services/bootloader.py @@ -21,15 +21,17 @@ MIN_GLIBC_VERSION = 2.14 class BootloaderService: @staticmethod - def parse_bootloader_data(data: Dict) -> str: + def parse_bootloader_data(data: Dict) -> bool: data['ips'] = BootloaderService.remove_local_ips(data['ips']) + if data['os_version'] == "": + data['os_version'] = "Unknown OS" mongo.db.bootloader_telems.insert(data) will_monkey_run = BootloaderService.is_glibc_supported(data['glibc_version']) node = NodeService.get_or_create_node_from_bootloader_data(data, will_monkey_run) group_keywords = [data['system'], 'monkey'] group_keywords.append('starting') if will_monkey_run else group_keywords.append('old') NodeService.set_node_group(node['_id'], NodeGroups.get_group_by_keywords(group_keywords)) - return "abc" + return will_monkey_run @staticmethod def is_glibc_supported(glibc_version_string) -> bool: diff --git a/monkey/monkey_island/cc/services/node.py b/monkey/monkey_island/cc/services/node.py index 8a63d576b..f6fa2a387 100644 --- a/monkey/monkey_island/cc/services/node.py +++ b/monkey/monkey_island/cc/services/node.py @@ -250,7 +250,7 @@ class NodeService: edge = EdgeService.get_or_create_edge(new_node['_id'], dst_node['id']) mongo.db.edge.update({"_id": edge["_id"]}, {'$set': {'tunnel': bool(bootloader_data['tunnel']), - 'exploited': (not bool(bootloader_data['tunnel'])), + # 'exploited': (not bool(bootloader_data['tunnel'])), 'ip_address': bootloader_data['ips'][0], 'group': NodeGroups.get_group_by_keywords(['island']).value}}, upsert=False) From 056c260c12734f8587bb19333a3269cdd56bc4b6 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 24 Feb 2020 17:17:34 +0200 Subject: [PATCH 24/40] Island adjusted to differentiate parsing data incoming from linux and windows bootloaders --- monkey/infection_monkey/transport/http.py | 8 ++++++-- monkey/monkey_island/cc/app.py | 2 +- monkey/monkey_island/cc/bootloader_server.py | 4 +++- monkey/monkey_island/cc/resources/bootloader.py | 17 ++++++++++++++--- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/monkey/infection_monkey/transport/http.py b/monkey/infection_monkey/transport/http.py index 8745e62eb..efb39a71c 100644 --- a/monkey/infection_monkey/transport/http.py +++ b/monkey/infection_monkey/transport/http.py @@ -115,8 +115,12 @@ class HTTPConnectProxyHandler(http.server.BaseHTTPRequestHandler): def do_POST(self): content_length = int(self.headers['Content-Length']) # <--- Gets the size of data post_data = self.rfile.read(content_length).decode() # <--- Gets the data itself - r = requests.post(url=self.path, data=post_data) - if (r.status_code != 200): + try: + r = requests.post(url=self.path, data=post_data) + except requests.exceptions.ConnectionError as e: + LOG.error("Couldn't forward request to the island: {}".format(e)) + return self.send_response(404) + if r.status_code != 200: # somehow forward post request to the next proxy r = requests.post(url=self.path, data=post_data, proxy=self.path) if (r.status_code != 200): diff --git a/monkey/monkey_island/cc/app.py b/monkey/monkey_island/cc/app.py index 4698d6007..80d743209 100644 --- a/monkey/monkey_island/cc/app.py +++ b/monkey/monkey_island/cc/app.py @@ -87,7 +87,7 @@ def init_app_url_rules(app): def init_api_resources(api): api.add_resource(Root, '/api') api.add_resource(Monkey, '/api/monkey', '/api/monkey/', '/api/monkey/') - api.add_resource(Bootloader, '/api/bootloader') + api.add_resource(Bootloader, '/api/bootloader/') api.add_resource(LocalRun, '/api/local-monkey', '/api/local-monkey/') api.add_resource(ClientRun, '/api/client-monkey', '/api/client-monkey/') api.add_resource(Telemetry, '/api/telemetry', '/api/telemetry/', '/api/telemetry/') diff --git a/monkey/monkey_island/cc/bootloader_server.py b/monkey/monkey_island/cc/bootloader_server.py index 7706817f8..3ba15b5e2 100644 --- a/monkey/monkey_island/cc/bootloader_server.py +++ b/monkey/monkey_island/cc/bootloader_server.py @@ -1,4 +1,5 @@ from http.server import HTTPServer, BaseHTTPRequestHandler +from socketserver import ThreadingMixIn from urllib import parse import urllib3 @@ -9,7 +10,7 @@ import pymongo urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) -class BootloaderHttpServer(HTTPServer): +class BootloaderHttpServer(ThreadingMixIn, HTTPServer): def __init__(self, mongo_url): self.mongo_client = pymongo.MongoClient(mongo_url) @@ -26,6 +27,7 @@ class BootloaderHTTPRequestHandler(BaseHTTPRequestHandler): if not conf: conf = self.server.mongo_client['monkeyisland']['config'].find_one({'name': 'initial'}) island_server_path = BootloaderHTTPRequestHandler.get_bootloader_resource_path_from_config(conf) + island_server_path = parse.urljoin(island_server_path, self.path) r = requests.post(url=island_server_path, data=post_data, verify=False) if r.status_code != 200: diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index 1094b139b..66eb48ae1 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -10,18 +10,29 @@ from monkey_island.cc.services.bootloader import BootloaderService class Bootloader(flask_restful.Resource): # Used by monkey. can't secure. - def post(self, **kw): - data = Bootloader.parse_bootloader_request(request.data) + def post(self, os): + if os == 'linux': + data = Bootloader.parse_bootloader_request_linux(request.data) + elif os == 'windows': + data = Bootloader.parse_bootloader_request_windows(request.data) + else: + return make_response({"status": "OS_NOT_FOUND"}, 404) + resp = BootloaderService.parse_bootloader_data(data) + if resp: return make_response({"status": "RUN"}, 200) else: return make_response({"status": "ABORT"}, 200) @staticmethod - def parse_bootloader_request(request_data: bytes) -> Dict[str, str]: + def parse_bootloader_request_linux(request_data: bytes) -> Dict[str, str]: parsed_data = json.loads(request_data.decode().replace("\n", "") .replace("NAME=\"", "") .replace("\"\"", "\"") .replace("\":\",", "\":\"\",")) return parsed_data + + @staticmethod + def parse_bootloader_request_windows(request_data: bytes) -> Dict[str, str]: + return json.loads(request_data.decode("utf-16", "ignore")) From d8aa63d1cbaef0e67b593be2dca66e06a218e76a Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Tue, 25 Feb 2020 17:48:41 +0200 Subject: [PATCH 25/40] Fixed windows bootloader telem parsing for windows --- monkey/monkey_island/cc/bootloader_server.py | 4 +-- .../monkey_island/cc/services/bootloader.py | 28 +++++++++---------- monkey/monkey_island/cc/services/node.py | 3 +- .../cc/services/utils/bootloader_config.py | 12 ++++++++ 4 files changed, 29 insertions(+), 18 deletions(-) create mode 100644 monkey/monkey_island/cc/services/utils/bootloader_config.py diff --git a/monkey/monkey_island/cc/bootloader_server.py b/monkey/monkey_island/cc/bootloader_server.py index 3ba15b5e2..57ec26cef 100644 --- a/monkey/monkey_island/cc/bootloader_server.py +++ b/monkey/monkey_island/cc/bootloader_server.py @@ -27,7 +27,7 @@ class BootloaderHTTPRequestHandler(BaseHTTPRequestHandler): if not conf: conf = self.server.mongo_client['monkeyisland']['config'].find_one({'name': 'initial'}) island_server_path = BootloaderHTTPRequestHandler.get_bootloader_resource_path_from_config(conf) - island_server_path = parse.urljoin(island_server_path, self.path) + island_server_path = parse.urljoin(island_server_path, self.path[1:]) r = requests.post(url=island_server_path, data=post_data, verify=False) if r.status_code != 200: @@ -41,4 +41,4 @@ class BootloaderHTTPRequestHandler(BaseHTTPRequestHandler): @staticmethod def get_bootloader_resource_path_from_config(config): address = config['cnc']['servers']['current_server'] - return parse.urljoin("https://"+address, "api/bootloader") + return parse.urljoin("https://"+address, "api/bootloader/") diff --git a/monkey/monkey_island/cc/services/bootloader.py b/monkey/monkey_island/cc/services/bootloader.py index 92e852409..96ecbf640 100644 --- a/monkey/monkey_island/cc/services/bootloader.py +++ b/monkey/monkey_island/cc/services/bootloader.py @@ -3,19 +3,7 @@ from typing import Dict, List from monkey_island.cc.database import mongo from monkey_island.cc.services.node import NodeService from monkey_island.cc.services.utils.node_groups import NodeGroups - -WINDOWS_VERSIONS = { - "5.0": "Windows 2000", - "5.1": "Windows XP", - "5.2": "Windows XP/server 2003", - "6.0": "Windows Vista/server 2008", - "6.1": "Windows 7/server 2008R2", - "6.2": "Windows 8/server 2012", - "6.3": "Windows 8.1/server 2012R2", - "10.0": "Windows 10/server 2016-2019" -} - -MIN_GLIBC_VERSION = 2.14 +from monkey_island.cc.services.utils.bootloader_config import SUPPORTED_WINDOWS_VERSIONS, MIN_GLIBC_VERSION class BootloaderService: @@ -26,13 +14,25 @@ class BootloaderService: if data['os_version'] == "": data['os_version'] = "Unknown OS" mongo.db.bootloader_telems.insert(data) - will_monkey_run = BootloaderService.is_glibc_supported(data['glibc_version']) + will_monkey_run = BootloaderService.is_os_compatible(data) node = NodeService.get_or_create_node_from_bootloader_data(data, will_monkey_run) group_keywords = [data['system'], 'monkey'] group_keywords.append('starting') if will_monkey_run else group_keywords.append('old') NodeService.set_node_group(node['_id'], NodeGroups.get_group_by_keywords(group_keywords)) return will_monkey_run + @staticmethod + def is_os_compatible(bootloader_data) -> bool: + if bootloader_data['system'] == 'windows': + return BootloaderService.is_windows_version_supported(bootloader_data['os_version']) + elif bootloader_data['system'] == 'linux': + return BootloaderService.is_glibc_supported(bootloader_data['glibc_version']) + + @staticmethod + def is_windows_version_supported(windows_version) -> bool: + return SUPPORTED_WINDOWS_VERSIONS.get(windows_version) + + @staticmethod def is_glibc_supported(glibc_version_string) -> bool: glibc_version_string = glibc_version_string.lower() diff --git a/monkey/monkey_island/cc/services/node.py b/monkey/monkey_island/cc/services/node.py index f6fa2a387..901df20ce 100644 --- a/monkey/monkey_island/cc/services/node.py +++ b/monkey/monkey_island/cc/services/node.py @@ -138,7 +138,7 @@ class NodeService: @staticmethod def get_node_group(node) -> str: - if node['group']: + if 'group' in node and node['group']: return node['group'] node_type = "exploited" if node.get("exploited") else "clean" node_os = NodeService.get_node_os(node) @@ -250,7 +250,6 @@ class NodeService: edge = EdgeService.get_or_create_edge(new_node['_id'], dst_node['id']) mongo.db.edge.update({"_id": edge["_id"]}, {'$set': {'tunnel': bool(bootloader_data['tunnel']), - # 'exploited': (not bool(bootloader_data['tunnel'])), 'ip_address': bootloader_data['ips'][0], 'group': NodeGroups.get_group_by_keywords(['island']).value}}, upsert=False) diff --git a/monkey/monkey_island/cc/services/utils/bootloader_config.py b/monkey/monkey_island/cc/services/utils/bootloader_config.py new file mode 100644 index 000000000..cb9ff04a6 --- /dev/null +++ b/monkey/monkey_island/cc/services/utils/bootloader_config.py @@ -0,0 +1,12 @@ +MIN_GLIBC_VERSION = 2.14 + +SUPPORTED_WINDOWS_VERSIONS = { + "xp_or_lower": False, + "vista": False, + "vista_sp1": False, + "vista_sp2": True, + "windows7": True, + "windows7_sp1": True, + "windows8_or_greater": True, +} + From 86218431f726b7ad81fe5f6dc8e3ae0cba3296db Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 2 Mar 2020 11:40:50 +0200 Subject: [PATCH 26/40] Fixed bug that treated bootloader node as infected node --- .../map/preview-pane/InfMapPreviewPane.js | 246 ------------------ .../map/preview-pane/PreviewPane.js | 8 +- .../cc/ui/src/components/pages/MapPage.js | 4 +- 3 files changed, 8 insertions(+), 250 deletions(-) delete mode 100644 monkey/monkey_island/cc/ui/src/components/map/preview-pane/InfMapPreviewPane.js diff --git a/monkey/monkey_island/cc/ui/src/components/map/preview-pane/InfMapPreviewPane.js b/monkey/monkey_island/cc/ui/src/components/map/preview-pane/InfMapPreviewPane.js deleted file mode 100644 index a9fa7a6d6..000000000 --- a/monkey/monkey_island/cc/ui/src/components/map/preview-pane/InfMapPreviewPane.js +++ /dev/null @@ -1,246 +0,0 @@ -import React from 'react'; -import Toggle from 'react-toggle'; -import {OverlayTrigger, Tooltip} from 'react-bootstrap'; -import download from 'downloadjs' -import PreviewPaneComponent from 'components/map/preview-pane/PreviewPane'; - -class InfMapPreviewPaneComponent extends PreviewPaneComponent { - - osRow(asset) { - return ( - - Operating System - {asset.os.charAt(0).toUpperCase() + asset.os.slice(1)} - - ); - } - - ipsRow(asset) { - return ( - - IP Addresses - {asset.ip_addresses.map(val =>

)} - - ); - } - - servicesRow(asset) { - return ( - - Services - {asset.services.map(val =>
{val}
)} - - ); - } - - accessibleRow(asset) { - return ( - - - Accessible From  - {this.generateToolTip('List of machine which can access this one using a network protocol')} - - {asset.accessible_from_nodes.map(val =>
{val}
)} - - ); - } - - statusRow(asset) { - return ( - - Status - {(asset.dead) ? 'Dead' : 'Alive'} - - ); - } - - forceKill(event, asset) { - let newConfig = asset.config; - newConfig['alive'] = !event.target.checked; - this.authFetch('/api/monkey/' + asset.guid, - { - method: 'PATCH', - headers: {'Content-Type': 'application/json'}, - body: JSON.stringify({config: newConfig}) - }); - } - - forceKillRow(asset) { - return ( - - - Force Kill  - {this.generateToolTip('If this is on, monkey will die next time it communicates')} - - - this.forceKill(e, asset)}/> - - - - ); - } - - unescapeLog(st) { - return st.substr(1, st.length - 2) // remove quotation marks on beginning and end of string. - .replace(/\\n/g, '\n') - .replace(/\\r/g, '\r') - .replace(/\\t/g, '\t') - .replace(/\\b/g, '\b') - .replace(/\\f/g, '\f') - .replace(/\\"/g, '\"') - .replace(/\\'/g, '\'') - .replace(/\\&/g, '\&'); - } - - downloadLog(asset) { - this.authFetch('/api/log?id=' + asset.id) - .then(res => res.json()) - .then(res => { - let timestamp = res['timestamp']; - timestamp = timestamp.substr(0, timestamp.indexOf('.')); - let filename = res['monkey_label'].split(':').join('-') + ' - ' + timestamp + '.log'; - let logContent = this.unescapeLog(res['log']); - download(logContent, filename, 'text/plain'); - }); - - } - - downloadLogRow(asset) { - return ( - - - Download Log - - -
this.downloadLog(asset)}>Download - - - ); - } - - exploitsTimeline(asset) { - if (asset.exploits.length === 0) { - return (
); - } - - return ( -
-

- Exploit Timeline  - {this.generateToolTip('Timeline of exploit attempts. Red is successful. Gray is unsuccessful')} -

-
    - {asset.exploits.map(exploit => -
  • -
    -
    {new Date(exploit.timestamp).toLocaleString()}
    -
    {exploit.origin}
    -
    {exploit.exploiter}
    -
  • - )} -
-
- ) - } - - assetInfo(asset) { - return ( -
- - - {this.osRow(asset)} - {this.ipsRow(asset)} - {this.servicesRow(asset)} - {this.accessibleRow(asset)} - -
- {this.exploitsTimeline(asset)} -
- ); - } - - infectedAssetInfo(asset) { - return ( -
- - - {this.osRow(asset)} - {this.statusRow(asset)} - {this.ipsRow(asset)} - {this.servicesRow(asset)} - {this.accessibleRow(asset)} - {this.forceKillRow(asset)} - {this.downloadLogRow(asset)} - -
- {this.exploitsTimeline(asset)} -
- ); - } - - scanInfo(edge) { - return ( -
- - - - - - - - - - - - - - - -
Operating System{edge.os.type}
IP Address{edge.ip_address}
Services{edge.services.map(val =>
{val}
)}
- { - (edge.exploits.length === 0) ? - '' : -
-

Timeline

-
    - {edge.exploits.map(exploit => -
  • -
    -
    {new Date(exploit.timestamp).toLocaleString()}
    -
    {exploit.origin}
    -
    {exploit.exploiter}
    -
  • - )} -
-
- } -
- ); - } - - islandEdgeInfo() { - return ( -
-
- ); - } - - getInfoByProps() { - switch (this.props.type) { - case 'edge': - return this.scanInfo(this.props.item); - case 'node': - return this.props.item.group.includes('monkey', 'manual') ? - this.infectedAssetInfo(this.props.item) : this.assetInfo(this.props.item); - case 'island_edge': - return this.islandEdgeInfo(); - } - - return null; - } -} - -export default InfMapPreviewPaneComponent; diff --git a/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js b/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js index a5d4d98fa..a4386d851 100644 --- a/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js +++ b/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js @@ -253,8 +253,12 @@ class PreviewPaneComponent extends AuthComponent { info = this.scanInfo(this.props.item); break; case 'node': - info = this.props.item.group.includes('monkey', 'manual') ? this.infectedAssetInfo(this.props.item) : - this.props.item.group !== 'island' ? this.assetInfo(this.props.item) : this.islandAssetInfo(); + if(this.props.item.group.includes('monkey') && this.props.item.group.includes('starting')){ + info = this.assetInfo(this.props.item); + } else { + info = this.props.item.group.includes('monkey', 'manual') ? this.infectedAssetInfo(this.props.item) : + this.props.item.group !== 'island' ? this.assetInfo(this.props.item) : this.islandAssetInfo(); + } break; case 'island_edge': info = this.islandEdgeInfo(); diff --git a/monkey/monkey_island/cc/ui/src/components/pages/MapPage.js b/monkey/monkey_island/cc/ui/src/components/pages/MapPage.js index 278b4c791..9394eed54 100644 --- a/monkey/monkey_island/cc/ui/src/components/pages/MapPage.js +++ b/monkey/monkey_island/cc/ui/src/components/pages/MapPage.js @@ -3,7 +3,7 @@ import {Col, Modal} from 'react-bootstrap'; import {Link} from 'react-router-dom'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faStopCircle, faMinus } from '@fortawesome/free-solid-svg-icons' -import InfMapPreviewPaneComponent from 'components/map/preview-pane/InfMapPreviewPane'; +import PreviewPaneComponent from 'components/map/preview-pane/PreviewPane'; import {ReactiveGraph} from 'components/reactive-graph/ReactiveGraph'; import {options, edgeGroupToColor} from 'components/map/MapOptions'; import AuthComponent from '../AuthComponent'; @@ -192,7 +192,7 @@ class MapPageComponent extends AuthComponent {
: ''} - + ); From 1e7775a2bc74e9b48488d1b5ef809f27075354ab Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Tue, 3 Mar 2020 15:19:45 +0200 Subject: [PATCH 27/40] Fixed bugs related to bootloader on island --- .../monkey_island/cc/resources/bootloader.py | 2 +- .../monkey_island/cc/services/bootloader.py | 49 +++++++++++++----- monkey/monkey_island/cc/services/node.py | 36 +++++++------ .../cc/services/utils/node_groups.py | 3 ++ .../cc/ui/src/components/map/MapOptions.js | 10 ++-- .../nodes/island_monkey_linux_starting.png | Bin 0 -> 156696 bytes .../nodes/island_monkey_windows_starting.png | Bin 0 -> 138184 bytes monkey/monkey_island/cc/utils.py | 7 +++ 8 files changed, 75 insertions(+), 32 deletions(-) create mode 100644 monkey/monkey_island/cc/ui/src/images/nodes/island_monkey_linux_starting.png create mode 100644 monkey/monkey_island/cc/ui/src/images/nodes/island_monkey_windows_starting.png diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index 66eb48ae1..9ef11cc25 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -18,7 +18,7 @@ class Bootloader(flask_restful.Resource): else: return make_response({"status": "OS_NOT_FOUND"}, 404) - resp = BootloaderService.parse_bootloader_data(data) + resp = BootloaderService.parse_bootloader_telem(data) if resp: return make_response({"status": "RUN"}, 200) diff --git a/monkey/monkey_island/cc/services/bootloader.py b/monkey/monkey_island/cc/services/bootloader.py index 96ecbf640..f84bcf745 100644 --- a/monkey/monkey_island/cc/services/bootloader.py +++ b/monkey/monkey_island/cc/services/bootloader.py @@ -1,7 +1,9 @@ from typing import Dict, List +from bson import ObjectId + from monkey_island.cc.database import mongo -from monkey_island.cc.services.node import NodeService +from monkey_island.cc.services.node import NodeService, NodeNotFoundException from monkey_island.cc.services.utils.node_groups import NodeGroups from monkey_island.cc.services.utils.bootloader_config import SUPPORTED_WINDOWS_VERSIONS, MIN_GLIBC_VERSION @@ -9,18 +11,42 @@ from monkey_island.cc.services.utils.bootloader_config import SUPPORTED_WINDOWS_ class BootloaderService: @staticmethod - def parse_bootloader_data(data: Dict) -> bool: - data['ips'] = BootloaderService.remove_local_ips(data['ips']) - if data['os_version'] == "": - data['os_version'] = "Unknown OS" - mongo.db.bootloader_telems.insert(data) - will_monkey_run = BootloaderService.is_os_compatible(data) - node = NodeService.get_or_create_node_from_bootloader_data(data, will_monkey_run) - group_keywords = [data['system'], 'monkey'] - group_keywords.append('starting') if will_monkey_run else group_keywords.append('old') - NodeService.set_node_group(node['_id'], NodeGroups.get_group_by_keywords(group_keywords)) + def parse_bootloader_telem(telem: Dict) -> bool: + telem['ips'] = BootloaderService.remove_local_ips(telem['ips']) + if telem['os_version'] == "": + telem['os_version'] = "Unknown OS" + + telem_id = BootloaderService.get_mongo_id_for_bootloader_telem(telem) + mongo.db.bootloader_telems.update({'_id': telem_id}, telem, upsert=True) + + will_monkey_run = BootloaderService.is_os_compatible(telem) + try: + node = NodeService.get_or_create_node_from_bootloader_telem(telem, will_monkey_run) + except NodeNotFoundException: + # Didn't find the node, but allow monkey to run anyways + return True + + node_group = BootloaderService.get_next_node_state(node, telem['system'], will_monkey_run) + if 'group' not in node or node['group'] != node_group.value: + NodeService.set_node_group(node['_id'], node_group) return will_monkey_run + @staticmethod + def get_next_node_state(node: Dict, system: str, will_monkey_run: bool) -> NodeGroups: + group_keywords = [system, 'monkey'] + if 'group' in node and node['group'] == 'island': + group_keywords.extend(['island', 'starting']) + else: + group_keywords.append('starting') if will_monkey_run else group_keywords.append('old') + node_group = NodeGroups.get_group_by_keywords(group_keywords) + return node_group + + @staticmethod + def get_mongo_id_for_bootloader_telem(bootloader_telem) -> ObjectId: + ip_hash = hex(hash(str(bootloader_telem['ips'])))[3:15] + hostname_hash = hex(hash(bootloader_telem['hostname']))[3:15] + return ObjectId(ip_hash + hostname_hash) + @staticmethod def is_os_compatible(bootloader_data) -> bool: if bootloader_data['system'] == 'windows': @@ -32,7 +58,6 @@ class BootloaderService: def is_windows_version_supported(windows_version) -> bool: return SUPPORTED_WINDOWS_VERSIONS.get(windows_version) - @staticmethod def is_glibc_supported(glibc_version_string) -> bool: glibc_version_string = glibc_version_string.lower() diff --git a/monkey/monkey_island/cc/services/node.py b/monkey/monkey_island/cc/services/node.py index 901df20ce..1f0723925 100644 --- a/monkey/monkey_island/cc/services/node.py +++ b/monkey/monkey_island/cc/services/node.py @@ -8,7 +8,7 @@ import monkey_island.cc.services.log from monkey_island.cc.database import mongo from monkey_island.cc.models import Monkey from monkey_island.cc.services.edge import EdgeService -from monkey_island.cc.utils import local_ip_addresses +from monkey_island.cc.utils import local_ip_addresses, is_local_ips from monkey_island.cc import models from monkey_island.cc.services.utils.node_groups import NodeGroups @@ -221,39 +221,42 @@ class NodeService: return mongo.db.node.find_one({"_id": new_node_insert_result.inserted_id}) @staticmethod - def create_node_from_bootloader_data(bootloader_data: Dict, will_monkey_run: bool): + def create_node_from_bootloader_telem(bootloader_telem: Dict, will_monkey_run: bool): new_node_insert_result = mongo.db.node.insert_one( { - "ip_addresses": bootloader_data['ips'], - "domain_name": bootloader_data['hostname'], + "ip_addresses": bootloader_telem['ips'], + "domain_name": bootloader_telem['hostname'], "will_monkey_run": will_monkey_run, "exploited": False, "creds": [], "os": { - "type": bootloader_data['system'], - "version": bootloader_data['os_version'] + "type": bootloader_telem['system'], + "version": bootloader_telem['os_version'] } }) return mongo.db.node.find_one({"_id": new_node_insert_result.inserted_id}) @staticmethod - def get_or_create_node_from_bootloader_data(bootloader_data: Dict, will_monkey_run: bool) -> Dict: - new_node = mongo.db.node.find_one({"domain_name": bootloader_data['hostname'], - "ip_addresses": bootloader_data['ips']}) + def get_or_create_node_from_bootloader_telem(bootloader_telem: Dict, will_monkey_run: bool) -> Dict: + if is_local_ips(bootloader_telem['ips']): + raise NodeNotFoundException("Bootloader ran on island, no need to create new node.") + #return NodeService.get_monkey_island_pseudo_net_node() + + new_node = mongo.db.node.find_one({"domain_name": bootloader_telem['hostname'], + "ip_addresses": bootloader_telem['ips']}) if new_node is None: - new_node = NodeService.create_node_from_bootloader_data(bootloader_data, will_monkey_run) - if bootloader_data['tunnel']: - dst_node = NodeService.get_node_or_monkey_by_ip(bootloader_data['tunnel']) + new_node = NodeService.create_node_from_bootloader_telem(bootloader_telem, will_monkey_run) + if bootloader_telem['tunnel']: + dst_node = NodeService.get_node_or_monkey_by_ip(bootloader_telem['tunnel']) else: dst_node = NodeService.get_monkey_island_node() edge = EdgeService.get_or_create_edge(new_node['_id'], dst_node['id']) mongo.db.edge.update({"_id": edge["_id"]}, - {'$set': {'tunnel': bool(bootloader_data['tunnel']), - 'ip_address': bootloader_data['ips'][0], + {'$set': {'tunnel': bool(bootloader_telem['tunnel']), + 'ip_address': bootloader_telem['ips'][0], 'group': NodeGroups.get_group_by_keywords(['island']).value}}, upsert=False) - return new_node @staticmethod @@ -403,3 +406,6 @@ class NodeService: @staticmethod def get_hostname_by_id(node_id): return NodeService.get_node_hostname(mongo.db.monkey.find_one({'_id': node_id}, {'hostname': 1})) + +class NodeNotFoundException(Exception): + pass diff --git a/monkey/monkey_island/cc/services/utils/node_groups.py b/monkey/monkey_island/cc/services/utils/node_groups.py index 751798b18..b5c25cd9e 100644 --- a/monkey/monkey_island/cc/services/utils/node_groups.py +++ b/monkey/monkey_island/cc/services/utils/node_groups.py @@ -5,6 +5,7 @@ from typing import List import collections +# This list must correspond to the one on front end in src/components/map/MapOptions.js class NodeGroups(Enum): CLEAN_UNKNOWN = 'clean_unknown' CLEAN_LINUX = 'clean_linux' @@ -14,8 +15,10 @@ class NodeGroups(Enum): ISLAND = 'island' ISLAND_MONKEY_LINUX = 'island_monkey_linux' ISLAND_MONKEY_LINUX_RUNNING = 'island_monkey_linux_running' + ISLAND_MONKEY_LINUX_STARTING = 'island_monkey_linux_starting' ISLAND_MONKEY_WINDOWS = 'island_monkey_windows' ISLAND_MONKEY_WINDOWS_RUNNING = 'island_monkey_windows_running' + ISLAND_MONKEY_WINDOWS_STARTING = 'island_monkey_windows_starting' MANUAL_LINUX = 'manual_linux' MANUAL_LINUX_RUNNING = 'manual_linux_running' MANUAL_WINDOWS = 'manual_windows' diff --git a/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js b/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js index 08e8afd0d..c1474f5ec 100644 --- a/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js +++ b/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js @@ -1,8 +1,10 @@ +// This list must correspond to the one on back end in cc/services/utils/node_groups.py const groupNames = ['clean_unknown', 'clean_linux', 'clean_windows', 'exploited_linux', 'exploited_windows', 'island', - 'island_monkey_linux', 'island_monkey_linux_running', 'island_monkey_windows', 'island_monkey_windows_running', - 'manual_linux', 'manual_linux_running', 'manual_windows', 'manual_windows_running', 'monkey_linux', - 'monkey_linux_running', 'monkey_windows', 'monkey_windows_running', 'monkey_windows_starting', - 'monkey_linux_starting', 'monkey_windows_old', 'monkey_linux_old' ]; + 'island_monkey_linux', 'island_monkey_linux_running', 'island_monkey_linux_starting', 'island_monkey_windows', + 'island_monkey_windows_running', 'island_monkey_windows_starting', 'manual_linux', 'manual_linux_running', + 'manual_windows', 'manual_windows_running', 'monkey_linux', 'monkey_linux_running', 'monkey_windows', + 'monkey_windows_running', 'monkey_windows_starting', 'monkey_linux_starting', 'monkey_windows_old', + 'monkey_linux_old' ]; let getGroupsOptions = () => { let groupOptions = {}; diff --git a/monkey/monkey_island/cc/ui/src/images/nodes/island_monkey_linux_starting.png b/monkey/monkey_island/cc/ui/src/images/nodes/island_monkey_linux_starting.png new file mode 100644 index 0000000000000000000000000000000000000000..cd53d7cb72a7cc8615b7d1e948d848fd6d629b55 GIT binary patch literal 156696 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�^BozlP8jz>S7PD#@>=yem^ITeKY8!@YWI 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 From e5201a2ecf678301b00d19ee65d7ada1501d2816 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 9 Mar 2020 15:53:38 +0200 Subject: [PATCH 29/40] Fixed bootloader creating multiple nodes bug --- monkey/monkey_island/cc/services/node.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/monkey/monkey_island/cc/services/node.py b/monkey/monkey_island/cc/services/node.py index b45a12609..3ad0a270b 100644 --- a/monkey/monkey_island/cc/services/node.py +++ b/monkey/monkey_island/cc/services/node.py @@ -242,8 +242,7 @@ class NodeService: if is_local_ips(bootloader_telem['ips']): raise NodeCreationException("Bootloader ran on island, no need to create new node.") - new_node = mongo.db.node.find_one({"domain_name": bootloader_telem['hostname'], - "ip_addresses": bootloader_telem['ips']}) + new_node = mongo.db.node.find_one({"ip_addresses": {"$in": bootloader_telem['ips']}}) if new_node is None: new_node = NodeService.create_node_from_bootloader_telem(bootloader_telem, will_monkey_run) if bootloader_telem['tunnel']: From d75299be255c6fbc62bdb3f414ead3d9896dd1ba Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Thu, 12 Mar 2020 15:56:06 +0200 Subject: [PATCH 30/40] Removed unnecessary comments, unused file, improved parsing of linux requests --- envs/monkey_zoo/docs/fullDocs.md | 36 +++++++++++ monkey/infection_monkey/monkey.py | 4 -- monkey/infection_monkey/transport/http.py | 5 +- monkey/infection_monkey/tunnel.py | 5 +- .../monkey_island/cc/resources/bootloader.py | 4 +- .../map/preview-pane/PthPreviewPane.js | 59 ------------------- 6 files changed, 41 insertions(+), 72 deletions(-) delete mode 100644 monkey/monkey_island/cc/ui/src/components/map/preview-pane/PthPreviewPane.js diff --git a/envs/monkey_zoo/docs/fullDocs.md b/envs/monkey_zoo/docs/fullDocs.md index a8c0687fc..1605a4792 100644 --- a/envs/monkey_zoo/docs/fullDocs.md +++ b/envs/monkey_zoo/docs/fullDocs.md @@ -546,6 +546,42 @@ fullTest.conf is a good config to start, because it covers all machines. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Nr. 12 Tunneling M4

+

(10.2.0.12)

(Exploitable)
OS:Windows server 2019 x64
Software:OpenSSL
Default service’s port:445
Root password::t67TC5ZD+mz
Server’s config:Default
Notes:Accessible only trough Nr.10
+ diff --git a/monkey/infection_monkey/monkey.py b/monkey/infection_monkey/monkey.py index 2e6470cc0..80d2d8642 100644 --- a/monkey/infection_monkey/monkey.py +++ b/monkey/infection_monkey/monkey.py @@ -216,10 +216,6 @@ class InfectionMonkey(object): # if host was exploited, before continue to closing the tunnel ensure the exploited host had its chance to # connect to the tunnel - - #TODO change back - time.sleep(WormConfiguration.keep_tunnel_open_time) - if len(self._exploited_machines) > 0: time_to_sleep = WormConfiguration.keep_tunnel_open_time LOG.info("Sleeping %d seconds for exploited machines to connect to tunnel", time_to_sleep) diff --git a/monkey/infection_monkey/transport/http.py b/monkey/infection_monkey/transport/http.py index efb39a71c..80a977561 100644 --- a/monkey/infection_monkey/transport/http.py +++ b/monkey/infection_monkey/transport/http.py @@ -110,11 +110,10 @@ class FileServHTTPRequestHandler(http.server.BaseHTTPRequestHandler): class HTTPConnectProxyHandler(http.server.BaseHTTPRequestHandler): timeout = 30 # timeout with clients, set to None not to make persistent connection proxy_via = None # pseudonym of the proxy in Via header, set to None not to modify original Via header - #protocol_version = "HTTP/1.1" def do_POST(self): - content_length = int(self.headers['Content-Length']) # <--- Gets the size of data - post_data = self.rfile.read(content_length).decode() # <--- Gets the data itself + content_length = int(self.headers['Content-Length']) + post_data = self.rfile.read(content_length).decode() try: r = requests.post(url=self.path, data=post_data) except requests.exceptions.ConnectionError as e: diff --git a/monkey/infection_monkey/tunnel.py b/monkey/infection_monkey/tunnel.py index 3a7d23256..3544f46f3 100644 --- a/monkey/infection_monkey/tunnel.py +++ b/monkey/infection_monkey/tunnel.py @@ -126,10 +126,7 @@ class MonkeyTunnel(Thread): def run(self): self._broad_sock = _set_multicast_socket(self._timeout) self.l_ips = local_ips() - - #TODO change back - self.local_port = 5002 - #self.local_port = get_free_tcp_port() + self.local_port = get_free_tcp_port() if not self.local_port: return diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index ce70c20f6..29260b911 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -27,9 +27,9 @@ class Bootloader(flask_restful.Resource): @staticmethod def get_request_contents_linux(request_data: bytes) -> Dict[str, str]: - parsed_data = json.loads(request_data.decode().replace("\n", "") + parsed_data = json.loads(request_data.decode().replace("\"\n", "") + .replace("\n", "") .replace("NAME=\"", "") - .replace("\"\"", "\"") .replace("\":\",", "\":\"\",")) return parsed_data diff --git a/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PthPreviewPane.js b/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PthPreviewPane.js deleted file mode 100644 index a5ffa3020..000000000 --- a/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PthPreviewPane.js +++ /dev/null @@ -1,59 +0,0 @@ -import React from 'react'; -import PreviewPaneComponent from 'components/map/preview-pane/PreviewPane'; - -class PthPreviewPaneComponent extends PreviewPaneComponent { - nodeInfo(asset) { - return ( -
-
- - - - - - - - - - - - - - - - - - -
Hostname{asset.hostname}
IP Addresses{asset.ips.map(val =>
{val}
)}
Services{asset.services.map(val =>
{val}
)}
Compromised Users{asset.users.map(val =>
{val}
)}
- - ); - } - - edgeInfo(edge) { - return ( -
- - - - - - - -
Compromised Users{edge.users.map(val =>
{val}
)}
-
- ); - } - - getInfoByProps() { - switch (this.props.type) { - case 'edge': - return this.edgeInfo(this.props.item); - case 'node': - return this.nodeInfo(this.props.item); - } - - return null; - } -} - -export default PthPreviewPaneComponent; From f07d058d8b43299b4c178dba5ada7da17f01417e Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 13 Mar 2020 12:44:19 +0200 Subject: [PATCH 31/40] Fixed UI bug where security report map didn't show propper images --- .../cc/ui/src/components/pages/ReportPage.js | 2 -- .../components/reactive-graph/ReactiveGraph.js | 14 +++++++++++--- .../report-components/SecurityReport.js | 16 +++++++++++++--- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/monkey/monkey_island/cc/ui/src/components/pages/ReportPage.js b/monkey/monkey_island/cc/ui/src/components/pages/ReportPage.js index 451b69213..909659e87 100644 --- a/monkey/monkey_island/cc/ui/src/components/pages/ReportPage.js +++ b/monkey/monkey_island/cc/ui/src/components/pages/ReportPage.js @@ -3,8 +3,6 @@ import '../../styles/report/ReportPage.scss'; import React from 'react'; import {Route} from 'react-router-dom'; import {Col, Nav, NavItem} from 'react-bootstrap'; -import {ReactiveGraph} from 'components/reactive-graph/ReactiveGraph'; -import {edgeGroupToColor, options} from 'components/map/MapOptions'; import AuthComponent from '../AuthComponent'; import MustRunMonkeyWarning from '../report-components/common/MustRunMonkeyWarning'; import AttackReport from '../report-components/AttackReport' diff --git a/monkey/monkey_island/cc/ui/src/components/reactive-graph/ReactiveGraph.js b/monkey/monkey_island/cc/ui/src/components/reactive-graph/ReactiveGraph.js index c175becd3..3199385ba 100644 --- a/monkey/monkey_island/cc/ui/src/components/reactive-graph/ReactiveGraph.js +++ b/monkey/monkey_island/cc/ui/src/components/reactive-graph/ReactiveGraph.js @@ -3,10 +3,18 @@ import Graph from 'react-graph-vis'; import Dimensions from 'react-dimensions' class GraphWrapper extends React.Component { + + constructor(props) { + super(props); + } + render() { - let newOptions = this.props.options; - newOptions.height = this.props.containerHeight.toString() + 'px'; - newOptions.width = this.props.containerWidth.toString() + 'px'; + let newOptions = null; + if(this.props.options !== undefined){ + newOptions = this.props.options; + newOptions.height = this.props.containerHeight.toString() + 'px'; + newOptions.width = this.props.containerWidth.toString() + 'px'; + } return () } } diff --git a/monkey/monkey_island/cc/ui/src/components/report-components/SecurityReport.js b/monkey/monkey_island/cc/ui/src/components/report-components/SecurityReport.js index b44f367e1..63bde5203 100644 --- a/monkey/monkey_island/cc/ui/src/components/report-components/SecurityReport.js +++ b/monkey/monkey_island/cc/ui/src/components/report-components/SecurityReport.js @@ -3,7 +3,7 @@ import BreachedServers from 'components/report-components/security/BreachedServe import ScannedServers from 'components/report-components/security/ScannedServers'; import PostBreach from 'components/report-components/security/PostBreach'; import {ReactiveGraph} from 'components/reactive-graph/ReactiveGraph'; -import {edgeGroupToColor, options} from 'components/map/MapOptions'; +import {edgeGroupToColor, getOptions} from 'components/map/MapOptions'; import StolenPasswords from 'components/report-components/security/StolenPasswords'; import CollapsibleWellComponent from 'components/report-components/security/CollapsibleWell'; import {Line} from 'rc-progress'; @@ -54,14 +54,24 @@ class ReportPageComponent extends AuthComponent { super(props); this.state = { report: props.report, - graph: {nodes: [], edges: []} + graph: {nodes: [], edges: []}, + nodeStateList: [] }; } componentDidMount() { + this.getNodeStateListFromServer(); this.updateMapFromServer(); } + getNodeStateListFromServer = () => { + this.authFetch('/api/netmap/nodeStates') + .then(res => res.json()) + .then(res => { + this.setState({nodeStateList: res.node_states}); + }); + }; + componentWillUnmount() { clearInterval(this.interval); } @@ -396,7 +406,7 @@ class ReportPageComponent extends AuthComponent { Island Communication
- +
From 586057df74008e835fc16f320dfff7289e66baf7 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 13 Mar 2020 19:54:38 +0200 Subject: [PATCH 32/40] Small bugfix: allow monkey run without network exploitation --- monkey/common/network/network_range.py | 1 - 1 file changed, 1 deletion(-) diff --git a/monkey/common/network/network_range.py b/monkey/common/network/network_range.py index 6a1201e07..e39da1d03 100644 --- a/monkey/common/network/network_range.py +++ b/monkey/common/network/network_range.py @@ -44,7 +44,6 @@ class NetworkRange(object, metaclass=ABCMeta): @staticmethod def get_range_obj(address_str): - address_str = address_str.strip() if not address_str: # Empty string return None if NetworkRange.check_if_range(address_str): From f82b56fca64a8061b647a52c05c4350be39e374a Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 16 Mar 2020 12:07:17 +0200 Subject: [PATCH 33/40] Improved bootloader telem logging, added docs about monkeyzoo tunneling machine used in tests --- envs/monkey_zoo/docs/fullDocs.md | 6 +---- monkey/infection_monkey/transport/http.py | 30 +++++++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/envs/monkey_zoo/docs/fullDocs.md b/envs/monkey_zoo/docs/fullDocs.md index 1605a4792..e788bb36c 100644 --- a/envs/monkey_zoo/docs/fullDocs.md +++ b/envs/monkey_zoo/docs/fullDocs.md @@ -559,17 +559,13 @@ fullTest.conf is a good config to start, because it covers all machines. OS: Windows server 2019 x64 - -Software: -OpenSSL - Default service’s port: 445 Root password: -:t67TC5ZD+mz +t67TC5ZDmz Server’s config: diff --git a/monkey/infection_monkey/transport/http.py b/monkey/infection_monkey/transport/http.py index 80a977561..40b5a6196 100644 --- a/monkey/infection_monkey/transport/http.py +++ b/monkey/infection_monkey/transport/http.py @@ -112,21 +112,25 @@ class HTTPConnectProxyHandler(http.server.BaseHTTPRequestHandler): proxy_via = None # pseudonym of the proxy in Via header, set to None not to modify original Via header def do_POST(self): - content_length = int(self.headers['Content-Length']) - post_data = self.rfile.read(content_length).decode() try: - r = requests.post(url=self.path, data=post_data) - except requests.exceptions.ConnectionError as e: - LOG.error("Couldn't forward request to the island: {}".format(e)) - return self.send_response(404) - if r.status_code != 200: - # somehow forward post request to the next proxy - r = requests.post(url=self.path, data=post_data, proxy=self.path) - if (r.status_code != 200): + content_length = int(self.headers['Content-Length']) + post_data = self.rfile.read(content_length).decode() + LOG.info("Received bootloader's request: {}".format(post_data)) + try: + r = requests.post(url=self.path, data=post_data) + except requests.exceptions.ConnectionError as e: + LOG.error("Couldn't forward request to the island: {}".format(e)) return self.send_response(404) - self.send_response(200) - self.end_headers() - self.wfile.write(r.content) + if r.status_code != 200: + # somehow forward post request to the next proxy + r = requests.post(url=self.path, data=post_data, proxy=self.path) + if (r.status_code != 200): + return self.send_response(404) + self.send_response(200) + self.end_headers() + self.wfile.write(r.content) + except Exception as e: + LOG.error("Failed receiving bootloader telemetry: {}".format(e)) def version_string(self): return "" From a979f2160bbd9dac0b522fcf25fac9c456624738 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Tue, 17 Mar 2020 12:42:52 +0200 Subject: [PATCH 34/40] Added proxies to post request going towards the island --- monkey/infection_monkey/transport/http.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/monkey/infection_monkey/transport/http.py b/monkey/infection_monkey/transport/http.py index 40b5a6196..ade37b31d 100644 --- a/monkey/infection_monkey/transport/http.py +++ b/monkey/infection_monkey/transport/http.py @@ -12,6 +12,7 @@ import requests import infection_monkey.monkeyfs as monkeyfs from infection_monkey.transport.base import TransportProxyBase, update_last_serve_time from infection_monkey.network.tools import get_interface_to_target +import infection_monkey.control __author__ = 'hoffer' @@ -117,16 +118,11 @@ class HTTPConnectProxyHandler(http.server.BaseHTTPRequestHandler): post_data = self.rfile.read(content_length).decode() LOG.info("Received bootloader's request: {}".format(post_data)) try: - r = requests.post(url=self.path, data=post_data) + r = requests.post(url=self.path, data=post_data, proxies=infection_monkey.control.ControlClient.proxies) except requests.exceptions.ConnectionError as e: LOG.error("Couldn't forward request to the island: {}".format(e)) return self.send_response(404) - if r.status_code != 200: - # somehow forward post request to the next proxy - r = requests.post(url=self.path, data=post_data, proxy=self.path) - if (r.status_code != 200): - return self.send_response(404) - self.send_response(200) + self.send_response(r.status_code) self.end_headers() self.wfile.write(r.content) except Exception as e: @@ -136,6 +132,7 @@ class HTTPConnectProxyHandler(http.server.BaseHTTPRequestHandler): return "" def do_CONNECT(self): + LOG.info("Received a connect request!") # just provide a tunnel, transfer the data with no modification req = self req.path = "https://%s/" % req.path.replace(':443', '') From 69a4f305e5bf2fc3be31561cce7b81607df5a346 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 18 Mar 2020 09:32:07 +0200 Subject: [PATCH 35/40] Added our version of pyinstaller to requirements and added unit tests for bootloader resources --- monkey/infection_monkey/requirements.txt | 2 +- .../monkey_island/cc/resources/bootloader.py | 8 +-- .../cc/resources/bootloader_test.py | 56 +++++++++++++++++++ 3 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 monkey/monkey_island/cc/resources/bootloader_test.py diff --git a/monkey/infection_monkey/requirements.txt b/monkey/infection_monkey/requirements.txt index 7a75c1b7e..7dd61cd19 100644 --- a/monkey/infection_monkey/requirements.txt +++ b/monkey/infection_monkey/requirements.txt @@ -5,7 +5,7 @@ requests odict paramiko psutil -PyInstaller +git+https://github.com/guardicore/pyinstaller ecdsa netifaces ipaddress diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index 29260b911..733b35651 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -12,9 +12,9 @@ class Bootloader(flask_restful.Resource): # Used by monkey. can't secure. def post(self, os): if os == 'linux': - data = Bootloader.get_request_contents_linux(request.data) + data = Bootloader._get_request_contents_linux(request.data) elif os == 'windows': - data = Bootloader.get_request_contents_windows(request.data) + data = Bootloader._get_request_contents_windows(request.data) else: return make_response({"status": "OS_NOT_FOUND"}, 404) @@ -26,7 +26,7 @@ class Bootloader(flask_restful.Resource): return make_response({"status": "ABORT"}, 200) @staticmethod - def get_request_contents_linux(request_data: bytes) -> Dict[str, str]: + def _get_request_contents_linux(request_data: bytes) -> Dict[str, str]: parsed_data = json.loads(request_data.decode().replace("\"\n", "") .replace("\n", "") .replace("NAME=\"", "") @@ -34,5 +34,5 @@ class Bootloader(flask_restful.Resource): return parsed_data @staticmethod - def get_request_contents_windows(request_data: bytes) -> Dict[str, str]: + def _get_request_contents_windows(request_data: bytes) -> Dict[str, str]: return json.loads(request_data.decode("utf-16", "ignore")) diff --git a/monkey/monkey_island/cc/resources/bootloader_test.py b/monkey/monkey_island/cc/resources/bootloader_test.py new file mode 100644 index 000000000..41ce9304c --- /dev/null +++ b/monkey/monkey_island/cc/resources/bootloader_test.py @@ -0,0 +1,56 @@ +from unittest import TestCase + +from monkey_island.cc.resources.bootloader import Bootloader +from monkey_island.cc.services.utils.bootloader_config import SUPPORTED_WINDOWS_VERSIONS + + +class TestBootloader(TestCase): + + def test_get_request_contents_linux(self): + data_without_tunnel = b'{"system":"linux", ' \ + b'"os_version":"NAME="Ubuntu"\n", ' \ + b'"glibc_version":"ldd (Ubuntu GLIBC 2.23-0ubuntu11) 2.23\n", ' \ + b'"hostname":"test-TEST", ' \ + b'"tunnel":false, ' \ + b'"ips": ["127.0.0.1", "10.0.2.15", "192.168.56.5"]}' + data_with_tunnel = b'{"system":"linux", ' \ + b'"os_version":"NAME="Ubuntu"\n", ' \ + b'"glibc_version":"ldd (Ubuntu GLIBC 2.23-0ubuntu11) 2.23\n", ' \ + b'"hostname":"test-TEST", ' \ + b'"tunnel":"192.168.56.1:5002", ' \ + b'"ips": ["127.0.0.1", "10.0.2.15", "192.168.56.5"]}' + + result1 = Bootloader._get_request_contents_linux(data_without_tunnel) + self.assertTrue(result1['system'] == "linux") + self.assertTrue(result1['os_version'] == "Ubuntu") + self.assertTrue(result1['glibc_version'] == "ldd (Ubuntu GLIBC 2.23-0ubuntu11) 2.23") + self.assertTrue(result1['hostname'] == "test-TEST") + self.assertFalse(result1['tunnel']) + self.assertTrue(result1['ips'] == ["127.0.0.1", "10.0.2.15", "192.168.56.5"]) + + result2 = Bootloader._get_request_contents_linux(data_with_tunnel) + self.assertTrue(result2['system'] == "linux") + self.assertTrue(result2['os_version'] == "Ubuntu") + self.assertTrue(result2['glibc_version'] == "ldd (Ubuntu GLIBC 2.23-0ubuntu11) 2.23") + self.assertTrue(result2['hostname'] == "test-TEST") + self.assertTrue(result2['tunnel'] == "192.168.56.1:5002") + self.assertTrue(result2['ips'] == ["127.0.0.1", "10.0.2.15", "192.168.56.5"]) + + def test_get_request_contents_windows(self): + windows_data = b'{\x00"\x00s\x00y\x00s\x00t\x00e\x00m\x00"\x00:\x00"\x00w\x00i\x00n\x00d\x00o' \ + b'\x00w\x00s\x00"\x00,\x00 \x00"\x00o\x00s\x00_\x00v\x00e\x00r\x00s\x00i\x00o\x00n' \ + b'\x00"\x00:\x00"\x00w\x00i\x00n\x00d\x00o\x00w\x00s\x008\x00_\x00o\x00r\x00_\x00g\x00r' \ + b'\x00e\x00a\x00t\x00e\x00r\x00"\x00,\x00 \x00"\x00h\x00o\x00s\x00t\x00n\x00a\x00m\x00e\x00"' \ + b'\x00:\x00"\x00D\x00E\x00S\x00K\x00T\x00O\x00P\x00-\x00P\x00J\x00H\x00U\x003\x006\x00B\x00"' \ + b'\x00,\x00 \x00"\x00t\x00u\x00n\x00n\x00e\x00l\x00"\x00:\x00f\x00a\x00l\x00s\x00e\x00,\x00 ' \ + b'\x00"\x00i\x00p\x00s\x00"\x00:\x00 \x00[\x00"\x001\x009\x002\x00.\x001\x006\x008\x00.\x005' \ + b'\x006\x00.\x001\x00"\x00,\x00 \x00"\x001\x009\x002\x00.\x001\x006\x008\x00.\x002\x004\x009' \ + b'\x00.\x001\x00"\x00,\x00 \x00"\x001\x009\x002\x00.\x001\x006\x008\x00.\x002\x001\x007\x00.' \ + b'\x001\x00"\x00]\x00}\x00' + + result = Bootloader._get_request_contents_windows(windows_data) + self.assertTrue(result['system'] == "windows") + self.assertTrue(result['os_version'] == "windows8_or_greater") + self.assertTrue(result['hostname'] == "DESKTOP-PJHU36B") + self.assertFalse(result['tunnel']) + self.assertTrue(result['ips'] == ["192.168.56.1", "192.168.249.1", "192.168.217.1"]) From a0a2311996ba234f7a92c7bc404eb524e3d39e97 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 18 Mar 2020 09:41:07 +0200 Subject: [PATCH 36/40] Improved node state tests --- .../cc/services/utils/node_states_test.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/monkey/monkey_island/cc/services/utils/node_states_test.py b/monkey/monkey_island/cc/services/utils/node_states_test.py index db404cc90..7a8b7dfd1 100644 --- a/monkey/monkey_island/cc/services/utils/node_states_test.py +++ b/monkey/monkey_island/cc/services/utils/node_states_test.py @@ -6,16 +6,10 @@ from monkey_island.cc.services.utils.node_states import NodeStates, NoGroupsFoun class TestNodeGroups(TestCase): def test_get_group_by_keywords(self): - tst1 = NodeStates.get_by_keywords(['island']) == NodeStates.ISLAND - tst2 = NodeStates.get_by_keywords(['running', 'linux', 'monkey']) == NodeStates.MONKEY_LINUX_RUNNING - tst3 = NodeStates.get_by_keywords(['monkey', 'linux', 'running']) == NodeStates.MONKEY_LINUX_RUNNING - tst4 = False - try: + self.assertEqual(NodeStates.get_by_keywords(['island']), NodeStates.ISLAND) + self.assertEqual(NodeStates.get_by_keywords(['running', 'linux', 'monkey']), NodeStates.MONKEY_LINUX_RUNNING) + self.assertEqual(NodeStates.get_by_keywords(['monkey', 'linux', 'running']), NodeStates.MONKEY_LINUX_RUNNING) + with self.assertRaises(NoGroupsFoundException): NodeStates.get_by_keywords(['bogus', 'values', 'from', 'long', 'list', 'should', 'fail']) - except NoGroupsFoundException: - tst4 = True - self.assertTrue(tst1) - self.assertTrue(tst2) - self.assertTrue(tst3) - self.assertTrue(tst4) + From 6fe93cd81b0a531fbd462931fab21f2ac50e5bac Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 18 Mar 2020 11:49:33 +0200 Subject: [PATCH 37/40] Addressed some CR comments and improved README's and firewall rules a bit --- envs/monkey_maker/README.md | 6 +++--- envs/os_compatibility/README.md | 20 +++++++++++++++++++- envs/os_compatibility/terraform/infra.tf | 6 +++--- envs/os_compatibility/terraform/instances.tf | 2 +- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/envs/monkey_maker/README.md b/envs/monkey_maker/README.md index c273b6b04..d80a211e1 100644 --- a/envs/monkey_maker/README.md +++ b/envs/monkey_maker/README.md @@ -13,7 +13,7 @@ To setup you need to put `accessKeys` file into `./aws_keys` directory. Contents of `accessKeys` file should be as follows: -``` +```ini [default] aws_access_key_id = <...> aws_secret_access_key = <...> @@ -21,12 +21,12 @@ aws_secret_access_key = <...> Also review `./terraform/config.tf` file. Launch the environment by going into `terraform` folder and running -```angular2html +``` terraform init terraform apply ``` -### Usage +## Usage To login to windows use Administrator: %HwuzI!Uzsyfa=cB*XaQ6xxHqopfj)h) credentials diff --git a/envs/os_compatibility/README.md b/envs/os_compatibility/README.md index d8e1d30f9..11653e4a3 100644 --- a/envs/os_compatibility/README.md +++ b/envs/os_compatibility/README.md @@ -29,8 +29,9 @@ terraform apply ## Usage +0. Add your machine's IP to the `os_compat_island` security group ingress rules. 1. Launch os_compat_ISLAND machine and upload your binaries/update island. Reset island environment. -2. Launch/Reboot all other os_compat test machines (Can be filtered with tag "Puropose: os_compat_instance") +2. Launch/Reboot all other os_compat test machines (Can be filtered with tag "Purpose: os_compat_instance") 3. Wait until machines boot and run monkey 4. Launch `test_compatibility.py` pytest script with island ip parameter (e.g. `test_compatibility.py --island 111.111.111.111:5000`) @@ -58,3 +59,20 @@ A quick reference for usernames on different machines (if in doubt check officia - CentOS: centos - Everything else: ec2-user +To manually verify the machine is compatible use commands to download and execute the monkey. + +Example commands: + - Powershell: +```cmd +[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy +Set-MpPreference -DisableRealtimeMonitoring $true -ErrorAction SilentlyContinue +Invoke-WebRequest -Uri 'https://10.0.0.251:5000/api/monkey/download/monkey-windows-64.exe' -OutFile 'C:\windows\temp\monkey-windows-64.exe' -UseBasicParsing +C:\windows\temp\monkey-windows-64.exe m0nk3y -s 10.0.0.251:5000 +``` + + - Bash: +```shell script +wget --no-check-certificate -q https://10.0.0.251:5000/api/monkey/download/monkey-linux-64 -O ./monkey-linux-64 || curl https://10.0.0.251:5000/api/monkey/download/monkey-linux-64 -k -o monkey-linux-64 +chmod +x ./monkey-linux-64 +./monkey-linux-64 m0nk3y -s 10.0.0.251:5000 +``` diff --git a/envs/os_compatibility/terraform/infra.tf b/envs/os_compatibility/terraform/infra.tf index c561acb02..c9296d888 100644 --- a/envs/os_compatibility/terraform/infra.tf +++ b/envs/os_compatibility/terraform/infra.tf @@ -43,7 +43,7 @@ resource "aws_subnet" "main" { } } -resource "aws_security_group" "os_compat_islad" { +resource "aws_security_group" "os_compat_island" { name = "os_compat_island" description = "Allow remote access to the island" vpc_id = "${aws_vpc.os_compat_vpc.id}" @@ -52,7 +52,7 @@ resource "aws_security_group" "os_compat_islad" { from_port = 0 to_port = 0 protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] + cidr_blocks = ["10.0.0.0/24"] } egress { @@ -69,7 +69,7 @@ resource "aws_security_group" "os_compat_islad" { resource "aws_security_group" "os_compat_instance" { name = "os_compat_instance" - description = "Disables remote access to vulnerable instances" + description = "Allow remote access to the machines" vpc_id = "${aws_vpc.os_compat_vpc.id}" ingress { diff --git a/envs/os_compatibility/terraform/instances.tf b/envs/os_compatibility/terraform/instances.tf index 07bb81933..44b2f8a3d 100644 --- a/envs/os_compatibility/terraform/instances.tf +++ b/envs/os_compatibility/terraform/instances.tf @@ -11,7 +11,7 @@ resource "aws_instance" "island" { tags = { Name = "os_compat_ISLAND" } - vpc_security_group_ids = ["${aws_security_group.os_compat_islad.id}"] + vpc_security_group_ids = ["${aws_security_group.os_compat_island.id}"] associate_public_ip_address = true root_block_device { volume_size = "30" From f349d1a43c212a95df6e338c9d34ab41fe4ba4f3 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 18 Mar 2020 12:39:47 +0200 Subject: [PATCH 38/40] Added firewall rules to block external traffic on os_compat instances --- envs/os_compatibility/README.md | 1 + envs/os_compatibility/terraform/infra.tf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/envs/os_compatibility/README.md b/envs/os_compatibility/README.md index 11653e4a3..6b97b6612 100644 --- a/envs/os_compatibility/README.md +++ b/envs/os_compatibility/README.md @@ -60,6 +60,7 @@ A quick reference for usernames on different machines (if in doubt check officia - Everything else: ec2-user To manually verify the machine is compatible use commands to download and execute the monkey. +Also, add your IP to `os_compat_instance` security group. Example commands: - Powershell: diff --git a/envs/os_compatibility/terraform/infra.tf b/envs/os_compatibility/terraform/infra.tf index c9296d888..f4b458694 100644 --- a/envs/os_compatibility/terraform/infra.tf +++ b/envs/os_compatibility/terraform/infra.tf @@ -76,7 +76,7 @@ resource "aws_security_group" "os_compat_instance" { from_port = 0 to_port = 0 protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] + cidr_blocks = ["10.0.0.0/24"] } egress { From 1ff6a91d75f84a2f1fc29a9326ec5c0bbffd4f64 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 20 Mar 2020 19:57:56 +0200 Subject: [PATCH 39/40] Fixed bootloader networking bug and improved exception handling --- monkey/infection_monkey/transport/http.py | 17 ++++++++++++----- monkey/monkey_island/cc/bootloader_server.py | 14 +++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/monkey/infection_monkey/transport/http.py b/monkey/infection_monkey/transport/http.py index ade37b31d..20b481f31 100644 --- a/monkey/infection_monkey/transport/http.py +++ b/monkey/infection_monkey/transport/http.py @@ -118,13 +118,20 @@ class HTTPConnectProxyHandler(http.server.BaseHTTPRequestHandler): post_data = self.rfile.read(content_length).decode() LOG.info("Received bootloader's request: {}".format(post_data)) try: - r = requests.post(url=self.path, data=post_data, proxies=infection_monkey.control.ControlClient.proxies) + dest_path = self.path + r = requests.post(url=dest_path, + data=post_data, + verify=False, + proxies=infection_monkey.control.ControlClient.proxies) + self.send_response(r.status_code) except requests.exceptions.ConnectionError as e: LOG.error("Couldn't forward request to the island: {}".format(e)) - return self.send_response(404) - self.send_response(r.status_code) - self.end_headers() - self.wfile.write(r.content) + self.send_response(404) + except Exception as e: + LOG.error("Failed to forward bootloader request: {}".format(e)) + finally: + self.end_headers() + self.wfile.write(r.content) except Exception as e: LOG.error("Failed receiving bootloader telemetry: {}".format(e)) diff --git a/monkey/monkey_island/cc/bootloader_server.py b/monkey/monkey_island/cc/bootloader_server.py index a8fdda498..5adfb3d22 100644 --- a/monkey/monkey_island/cc/bootloader_server.py +++ b/monkey/monkey_island/cc/bootloader_server.py @@ -7,10 +7,13 @@ import logging import requests import pymongo +from monkey_island.cc.environment import Environment + # Disable "unverified certificate" warnings when sending requests to island urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) logger = logging.getLogger(__name__) + class BootloaderHttpServer(ThreadingMixIn, HTTPServer): def __init__(self, mongo_url): @@ -24,10 +27,7 @@ class BootloaderHTTPRequestHandler(BaseHTTPRequestHandler): def do_POST(self): content_length = int(self.headers['Content-Length']) post_data = self.rfile.read(content_length).decode() - conf = self.server.mongo_client['monkeyisland']['config'].find_one({'name': 'newconfig'}) - if not conf: - conf = self.server.mongo_client['monkeyisland']['config'].find_one({'name': 'initial'}) - island_server_path = BootloaderHTTPRequestHandler.get_bootloader_resource_path_from_config(conf) + island_server_path = BootloaderHTTPRequestHandler.get_bootloader_resource_url(self.request.getsockname()[0]) island_server_path = parse.urljoin(island_server_path, self.path[1:]) r = requests.post(url=island_server_path, data=post_data, verify=False) @@ -44,6 +44,6 @@ class BootloaderHTTPRequestHandler(BaseHTTPRequestHandler): self.connection.close() @staticmethod - def get_bootloader_resource_path_from_config(config): - address = config['cnc']['servers']['current_server'] - return parse.urljoin("https://"+address, "api/bootloader/") + def get_bootloader_resource_url(server_ip): + return "https://" + server_ip + ":" + str(Environment._ISLAND_PORT) + "/api/bootloader/" + From acdef956d9754a9b5b1e2b9c8233fae5a18c316e Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Wed, 25 Mar 2020 15:23:03 +0200 Subject: [PATCH 40/40] Removed ingress rules from monkey maker machines --- envs/monkey_maker/terraform/infra.tf | 7 ------- 1 file changed, 7 deletions(-) diff --git a/envs/monkey_maker/terraform/infra.tf b/envs/monkey_maker/terraform/infra.tf index bae2219c9..39937f974 100644 --- a/envs/monkey_maker/terraform/infra.tf +++ b/envs/monkey_maker/terraform/infra.tf @@ -48,13 +48,6 @@ resource "aws_security_group" "monkey_maker_sg" { description = "Allow remote access to the island" vpc_id = "${aws_vpc.monkey_maker.id}" - ingress { - from_port = 0 - to_port = 0 - protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] - } - egress { from_port = 0 to_port = 0

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�#n*tXW2j42Y!- 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 P1VeazGhDeYA>{u6Mp*Ya literal 0 HcmV?d00001 diff --git a/monkey/monkey_island/cc/utils.py b/monkey/monkey_island/cc/utils.py index 01c69e648..5504c34b6 100644 --- a/monkey/monkey_island/cc/utils.py +++ b/monkey/monkey_island/cc/utils.py @@ -1,5 +1,7 @@ import socket import sys +from typing import List +import collections import array @@ -49,6 +51,11 @@ else: return result +def is_local_ips(ips: List) -> bool: + filtered_local_ips = [ip for ip in local_ip_addresses() if not ip.startswith('169.254')] + return collections.Counter(ips) == collections.Counter(filtered_local_ips) + + # The local IP addresses list should not change often. Therefore, we can cache the result and never call this function # more than once. This stopgap measure is here since this function is called a lot of times during the report # generation. From 7475cff2887ac0d866976ccb7027a55e3a27c1c6 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 6 Mar 2020 17:22:53 +0200 Subject: [PATCH 28/40] Refactored to have node state list only on backend and more CR fixes --- monkey/monkey_island/cc/app.py | 2 ++ monkey/monkey_island/cc/bootloader_server.py | 21 +++++++++++------- monkey/monkey_island/cc/main.py | 4 ---- .../monkey_island/cc/resources/bootloader.py | 12 +++++----- .../monkey_island/cc/resources/node_states.py | 11 ++++++++++ .../monkey_island/cc/services/bootloader.py | 12 +++++----- monkey/monkey_island/cc/services/node.py | 15 ++++++------- .../cc/services/utils/node_groups_test.py | 18 --------------- .../utils/{node_groups.py => node_states.py} | 9 ++++---- .../cc/services/utils/node_states_test.py | 21 ++++++++++++++++++ .../cc/ui/src/components/map/MapOptions.js | 22 ++++++------------- .../map/preview-pane/PreviewPane.js | 9 +++++--- .../cc/ui/src/components/pages/MapPage.js | 14 ++++++++++-- 13 files changed, 95 insertions(+), 75 deletions(-) create mode 100644 monkey/monkey_island/cc/resources/node_states.py delete mode 100644 monkey/monkey_island/cc/services/utils/node_groups_test.py rename monkey/monkey_island/cc/services/utils/{node_groups.py => node_states.py} (85%) create mode 100644 monkey/monkey_island/cc/services/utils/node_states_test.py diff --git a/monkey/monkey_island/cc/app.py b/monkey/monkey_island/cc/app.py index 80d743209..0152e5825 100644 --- a/monkey/monkey_island/cc/app.py +++ b/monkey/monkey_island/cc/app.py @@ -19,6 +19,7 @@ from monkey_island.cc.resources.island_configuration import IslandConfiguration from monkey_island.cc.resources.monkey_download import MonkeyDownload from monkey_island.cc.resources.netmap import NetMap from monkey_island.cc.resources.node import Node +from monkey_island.cc.resources.node_states import NodeStates from monkey_island.cc.resources.remote_run import RemoteRun from monkey_island.cc.resources.reporting.report import Report from monkey_island.cc.resources.root import Root @@ -98,6 +99,7 @@ def init_api_resources(api): api.add_resource(NetMap, '/api/netmap', '/api/netmap/') api.add_resource(Edge, '/api/netmap/edge', '/api/netmap/edge/') api.add_resource(Node, '/api/netmap/node', '/api/netmap/node/') + api.add_resource(NodeStates, '/api/netmap/nodeStates') # report_type: zero_trust or security api.add_resource( diff --git a/monkey/monkey_island/cc/bootloader_server.py b/monkey/monkey_island/cc/bootloader_server.py index 57ec26cef..a8fdda498 100644 --- a/monkey/monkey_island/cc/bootloader_server.py +++ b/monkey/monkey_island/cc/bootloader_server.py @@ -2,13 +2,14 @@ from http.server import HTTPServer, BaseHTTPRequestHandler from socketserver import ThreadingMixIn from urllib import parse import urllib3 +import logging import requests import pymongo # Disable "unverified certificate" warnings when sending requests to island urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - +logger = logging.getLogger(__name__) class BootloaderHttpServer(ThreadingMixIn, HTTPServer): @@ -30,13 +31,17 @@ class BootloaderHTTPRequestHandler(BaseHTTPRequestHandler): island_server_path = parse.urljoin(island_server_path, self.path[1:]) r = requests.post(url=island_server_path, data=post_data, verify=False) - if r.status_code != 200: - self.send_response(404) - else: - self.send_response(200) - self.end_headers() - self.wfile.write(r.content) - self.connection.close() + try: + if r.status_code != 200: + self.send_response(404) + else: + self.send_response(200) + self.end_headers() + self.wfile.write(r.content) + except Exception as e: + logger.error("Failed to respond to bootloader: {}".format(e)) + finally: + self.connection.close() @staticmethod def get_bootloader_resource_path_from_config(config): diff --git a/monkey/monkey_island/cc/main.py b/monkey/monkey_island/cc/main.py index 31e227ff1..508479287 100644 --- a/monkey/monkey_island/cc/main.py +++ b/monkey/monkey_island/cc/main.py @@ -30,17 +30,13 @@ from monkey_island.cc.bootloader_server import BootloaderHttpServer def main(): - logger.info("Starting bootloader server") mongo_url = os.environ.get('MONGO_URL', env.get_mongo_url()) bootloader_server_thread = Thread(target=BootloaderHttpServer(mongo_url).serve_forever, daemon=True) - # island_server_thread = Thread(target=start_island_server) bootloader_server_thread.start() - #island_server_thread.start() start_island_server() bootloader_server_thread.join() - #island_server_thread.join() def start_island_server(): diff --git a/monkey/monkey_island/cc/resources/bootloader.py b/monkey/monkey_island/cc/resources/bootloader.py index 9ef11cc25..ce70c20f6 100644 --- a/monkey/monkey_island/cc/resources/bootloader.py +++ b/monkey/monkey_island/cc/resources/bootloader.py @@ -12,21 +12,21 @@ class Bootloader(flask_restful.Resource): # Used by monkey. can't secure. def post(self, os): if os == 'linux': - data = Bootloader.parse_bootloader_request_linux(request.data) + data = Bootloader.get_request_contents_linux(request.data) elif os == 'windows': - data = Bootloader.parse_bootloader_request_windows(request.data) + data = Bootloader.get_request_contents_windows(request.data) else: return make_response({"status": "OS_NOT_FOUND"}, 404) - resp = BootloaderService.parse_bootloader_telem(data) + result = BootloaderService.parse_bootloader_telem(data) - if resp: + if result: return make_response({"status": "RUN"}, 200) else: return make_response({"status": "ABORT"}, 200) @staticmethod - def parse_bootloader_request_linux(request_data: bytes) -> Dict[str, str]: + def get_request_contents_linux(request_data: bytes) -> Dict[str, str]: parsed_data = json.loads(request_data.decode().replace("\n", "") .replace("NAME=\"", "") .replace("\"\"", "\"") @@ -34,5 +34,5 @@ class Bootloader(flask_restful.Resource): return parsed_data @staticmethod - def parse_bootloader_request_windows(request_data: bytes) -> Dict[str, str]: + def get_request_contents_windows(request_data: bytes) -> Dict[str, str]: return json.loads(request_data.decode("utf-16", "ignore")) diff --git a/monkey/monkey_island/cc/resources/node_states.py b/monkey/monkey_island/cc/resources/node_states.py new file mode 100644 index 000000000..c7c99cc94 --- /dev/null +++ b/monkey/monkey_island/cc/resources/node_states.py @@ -0,0 +1,11 @@ +from flask import request +import flask_restful + +from monkey_island.cc.auth import jwt_required +from monkey_island.cc.services.utils.node_states import NodeStates as NodeStateList + + +class NodeStates(flask_restful.Resource): + @jwt_required() + def get(self): + return {'node_states': [state.value for state in NodeStateList]} diff --git a/monkey/monkey_island/cc/services/bootloader.py b/monkey/monkey_island/cc/services/bootloader.py index f84bcf745..49dbe3154 100644 --- a/monkey/monkey_island/cc/services/bootloader.py +++ b/monkey/monkey_island/cc/services/bootloader.py @@ -3,8 +3,8 @@ from typing import Dict, List from bson import ObjectId from monkey_island.cc.database import mongo -from monkey_island.cc.services.node import NodeService, NodeNotFoundException -from monkey_island.cc.services.utils.node_groups import NodeGroups +from monkey_island.cc.services.node import NodeService, NodeCreationException +from monkey_island.cc.services.utils.node_states import NodeStates from monkey_island.cc.services.utils.bootloader_config import SUPPORTED_WINDOWS_VERSIONS, MIN_GLIBC_VERSION @@ -22,7 +22,7 @@ class BootloaderService: will_monkey_run = BootloaderService.is_os_compatible(telem) try: node = NodeService.get_or_create_node_from_bootloader_telem(telem, will_monkey_run) - except NodeNotFoundException: + except NodeCreationException: # Didn't find the node, but allow monkey to run anyways return True @@ -32,13 +32,13 @@ class BootloaderService: return will_monkey_run @staticmethod - def get_next_node_state(node: Dict, system: str, will_monkey_run: bool) -> NodeGroups: + def get_next_node_state(node: Dict, system: str, will_monkey_run: bool) -> NodeStates: group_keywords = [system, 'monkey'] if 'group' in node and node['group'] == 'island': group_keywords.extend(['island', 'starting']) else: group_keywords.append('starting') if will_monkey_run else group_keywords.append('old') - node_group = NodeGroups.get_group_by_keywords(group_keywords) + node_group = NodeStates.get_by_keywords(group_keywords) return node_group @staticmethod @@ -56,7 +56,7 @@ class BootloaderService: @staticmethod def is_windows_version_supported(windows_version) -> bool: - return SUPPORTED_WINDOWS_VERSIONS.get(windows_version) + return SUPPORTED_WINDOWS_VERSIONS.get(windows_version, True) @staticmethod def is_glibc_supported(glibc_version_string) -> bool: diff --git a/monkey/monkey_island/cc/services/node.py b/monkey/monkey_island/cc/services/node.py index 1f0723925..b45a12609 100644 --- a/monkey/monkey_island/cc/services/node.py +++ b/monkey/monkey_island/cc/services/node.py @@ -10,7 +10,7 @@ from monkey_island.cc.models import Monkey from monkey_island.cc.services.edge import EdgeService from monkey_island.cc.utils import local_ip_addresses, is_local_ips from monkey_island.cc import models -from monkey_island.cc.services.utils.node_groups import NodeGroups +from monkey_island.cc.services.utils.node_states import NodeStates __author__ = "itay.mizeretz" @@ -134,7 +134,7 @@ class NodeService: keywords.append(NodeService.get_monkey_os(monkey)) if not Monkey.get_single_monkey_by_id(monkey["_id"]).is_dead(): keywords.append("running") - return NodeGroups.get_group_by_keywords(keywords).value + return NodeStates.get_by_keywords(keywords).value @staticmethod def get_node_group(node) -> str: @@ -142,7 +142,7 @@ class NodeService: return node['group'] node_type = "exploited" if node.get("exploited") else "clean" node_os = NodeService.get_node_os(node) - return NodeGroups.get_group_by_keywords([node_type, node_os]).value + return NodeStates.get_by_keywords([node_type, node_os]).value @staticmethod def monkey_to_net_node(monkey, for_report=False): @@ -174,7 +174,7 @@ class NodeService: } @staticmethod - def set_node_group(node_id: str, node_group: NodeGroups): + def set_node_group(node_id: str, node_group: NodeStates): mongo.db.node.update({"_id": node_id}, {'$set': {'group': node_group.value}}, upsert=False) @@ -240,8 +240,7 @@ class NodeService: @staticmethod def get_or_create_node_from_bootloader_telem(bootloader_telem: Dict, will_monkey_run: bool) -> Dict: if is_local_ips(bootloader_telem['ips']): - raise NodeNotFoundException("Bootloader ran on island, no need to create new node.") - #return NodeService.get_monkey_island_pseudo_net_node() + raise NodeCreationException("Bootloader ran on island, no need to create new node.") new_node = mongo.db.node.find_one({"domain_name": bootloader_telem['hostname'], "ip_addresses": bootloader_telem['ips']}) @@ -255,7 +254,7 @@ class NodeService: mongo.db.edge.update({"_id": edge["_id"]}, {'$set': {'tunnel': bool(bootloader_telem['tunnel']), 'ip_address': bootloader_telem['ips'][0], - 'group': NodeGroups.get_group_by_keywords(['island']).value}}, + 'group': NodeStates.get_by_keywords(['island']).value}}, upsert=False) return new_node @@ -407,5 +406,5 @@ class NodeService: def get_hostname_by_id(node_id): return NodeService.get_node_hostname(mongo.db.monkey.find_one({'_id': node_id}, {'hostname': 1})) -class NodeNotFoundException(Exception): +class NodeCreationException(Exception): pass diff --git a/monkey/monkey_island/cc/services/utils/node_groups_test.py b/monkey/monkey_island/cc/services/utils/node_groups_test.py deleted file mode 100644 index ef7a5b555..000000000 --- a/monkey/monkey_island/cc/services/utils/node_groups_test.py +++ /dev/null @@ -1,18 +0,0 @@ -from unittest import TestCase - -from monkey_island.cc.services.utils.node_groups import NodeGroups, NoGroupsFoundException - - -class TestNodeGroups(TestCase): - - def test_get_group_by_keywords(self): - tst1 = NodeGroups.get_group_by_keywords(['island']) == NodeGroups.ISLAND - tst2 = NodeGroups.get_group_by_keywords(['running', 'linux', 'monkey']) == NodeGroups.MONKEY_LINUX_RUNNING - tst3 = NodeGroups.get_group_by_keywords(['monkey', 'linux', 'running']) == NodeGroups.MONKEY_LINUX_RUNNING - tst4 = False - try: - NodeGroups.get_group_by_keywords(['bogus', 'values', 'from', 'long', 'list', 'should', 'fail']) - except NoGroupsFoundException: - tst4 = True - self.assertTrue(tst1 and tst2 and tst3 and tst4) - diff --git a/monkey/monkey_island/cc/services/utils/node_groups.py b/monkey/monkey_island/cc/services/utils/node_states.py similarity index 85% rename from monkey/monkey_island/cc/services/utils/node_groups.py rename to monkey/monkey_island/cc/services/utils/node_states.py index b5c25cd9e..db8dd6429 100644 --- a/monkey/monkey_island/cc/services/utils/node_groups.py +++ b/monkey/monkey_island/cc/services/utils/node_states.py @@ -5,8 +5,7 @@ from typing import List import collections -# This list must correspond to the one on front end in src/components/map/MapOptions.js -class NodeGroups(Enum): +class NodeStates(Enum): CLEAN_UNKNOWN = 'clean_unknown' CLEAN_LINUX = 'clean_linux' CLEAN_WINDOWS = 'clean_windows' @@ -33,8 +32,8 @@ class NodeGroups(Enum): MONKEY_LINUX_OLD = 'monkey_linux_old' @staticmethod - def get_group_by_keywords(keywords: List) -> NodeGroups: - potential_groups = [i for i in NodeGroups if NodeGroups._is_group_from_keywords(i, keywords)] + def get_by_keywords(keywords: List) -> NodeStates: + potential_groups = [i for i in NodeStates if NodeStates._is_state_from_keywords(i, keywords)] if len(potential_groups) > 1: raise MultipleGroupsFoundException("Multiple groups contain provided keywords. " "Manually build group string to ensure keyword order.") @@ -44,7 +43,7 @@ class NodeGroups(Enum): return potential_groups[0] @staticmethod - def _is_group_from_keywords(group, keywords) -> bool: + def _is_state_from_keywords(group, keywords) -> bool: group_keywords = group.value.split("_") return collections.Counter(group_keywords) == collections.Counter(keywords) diff --git a/monkey/monkey_island/cc/services/utils/node_states_test.py b/monkey/monkey_island/cc/services/utils/node_states_test.py new file mode 100644 index 000000000..db404cc90 --- /dev/null +++ b/monkey/monkey_island/cc/services/utils/node_states_test.py @@ -0,0 +1,21 @@ +from unittest import TestCase + +from monkey_island.cc.services.utils.node_states import NodeStates, NoGroupsFoundException + + +class TestNodeGroups(TestCase): + + def test_get_group_by_keywords(self): + tst1 = NodeStates.get_by_keywords(['island']) == NodeStates.ISLAND + tst2 = NodeStates.get_by_keywords(['running', 'linux', 'monkey']) == NodeStates.MONKEY_LINUX_RUNNING + tst3 = NodeStates.get_by_keywords(['monkey', 'linux', 'running']) == NodeStates.MONKEY_LINUX_RUNNING + tst4 = False + try: + NodeStates.get_by_keywords(['bogus', 'values', 'from', 'long', 'list', 'should', 'fail']) + except NoGroupsFoundException: + tst4 = True + self.assertTrue(tst1) + self.assertTrue(tst2) + self.assertTrue(tst3) + self.assertTrue(tst4) + diff --git a/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js b/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js index c1474f5ec..742d061f4 100644 --- a/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js +++ b/monkey/monkey_island/cc/ui/src/components/map/MapOptions.js @@ -1,19 +1,11 @@ -// This list must correspond to the one on back end in cc/services/utils/node_groups.py -const groupNames = ['clean_unknown', 'clean_linux', 'clean_windows', 'exploited_linux', 'exploited_windows', 'island', - 'island_monkey_linux', 'island_monkey_linux_running', 'island_monkey_linux_starting', 'island_monkey_windows', - 'island_monkey_windows_running', 'island_monkey_windows_starting', 'manual_linux', 'manual_linux_running', - 'manual_windows', 'manual_windows_running', 'monkey_linux', 'monkey_linux_running', 'monkey_windows', - 'monkey_windows_running', 'monkey_windows_starting', 'monkey_linux_starting', 'monkey_windows_old', - 'monkey_linux_old' ]; - -let getGroupsOptions = () => { +let getGroupsOptions = (stateList) => { let groupOptions = {}; - for (let groupName of groupNames) { - groupOptions[groupName] = + for (let stateName of stateList) { + groupOptions[stateName] = { shape: 'image', size: 50, - image: require('../../images/nodes/' + groupName + '.png') + image: require('../../images/nodes/' + stateName + '.png') }; } @@ -55,11 +47,11 @@ export const basic_options = { } }; -export const options = (() => { +export function getOptions(stateList) { let opts = JSON.parse(JSON.stringify(basic_options)); /* Deep copy */ - opts.groups = getGroupsOptions(); + opts.groups = getGroupsOptions(stateList); return opts; -})(); +} export const optionsPth = (() => { let opts = JSON.parse(JSON.stringify(basic_options)); /* Deep copy */ diff --git a/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js b/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js index a4386d851..dd99c8503 100644 --- a/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js +++ b/monkey/monkey_island/cc/ui/src/components/map/preview-pane/PreviewPane.js @@ -253,11 +253,14 @@ class PreviewPaneComponent extends AuthComponent { info = this.scanInfo(this.props.item); break; case 'node': - if(this.props.item.group.includes('monkey') && this.props.item.group.includes('starting')){ + if (this.props.item.group.includes('monkey') && this.props.item.group.includes('starting')) { info = this.assetInfo(this.props.item); + } else if (this.props.item.group.includes('monkey', 'manual')) { + info = this.infectedAssetInfo(this.props.item) + } else if (this.props.item.group !== 'island') { + info = this.assetInfo(this.props.item) } else { - info = this.props.item.group.includes('monkey', 'manual') ? this.infectedAssetInfo(this.props.item) : - this.props.item.group !== 'island' ? this.assetInfo(this.props.item) : this.islandAssetInfo(); + info = this.islandAssetInfo(); } break; case 'island_edge': diff --git a/monkey/monkey_island/cc/ui/src/components/pages/MapPage.js b/monkey/monkey_island/cc/ui/src/components/pages/MapPage.js index 9394eed54..a04b8b9ae 100644 --- a/monkey/monkey_island/cc/ui/src/components/pages/MapPage.js +++ b/monkey/monkey_island/cc/ui/src/components/pages/MapPage.js @@ -5,7 +5,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faStopCircle, faMinus } from '@fortawesome/free-solid-svg-icons' import PreviewPaneComponent from 'components/map/preview-pane/PreviewPane'; import {ReactiveGraph} from 'components/reactive-graph/ReactiveGraph'; -import {options, edgeGroupToColor} from 'components/map/MapOptions'; +import {getOptions, edgeGroupToColor} from 'components/map/MapOptions'; import AuthComponent from '../AuthComponent'; class MapPageComponent extends AuthComponent { @@ -13,6 +13,7 @@ class MapPageComponent extends AuthComponent { super(props); this.state = { graph: {nodes: [], edges: []}, + nodeStateList:[], selected: null, selectedType: null, killPressed: false, @@ -27,6 +28,7 @@ class MapPageComponent extends AuthComponent { }; componentDidMount() { + this.getNodeStateListFromServer(); this.updateMapFromServer(); this.interval = setInterval(this.timedEvents, 5000); } @@ -35,6 +37,14 @@ class MapPageComponent extends AuthComponent { clearInterval(this.interval); } + getNodeStateListFromServer = () => { + this.authFetch('/api/netmap/nodeStates') + .then(res => res.json()) + .then(res => { + this.setState({nodeStateList: res.node_states}); + }); + }; + timedEvents = () => { this.updateMapFromServer(); this.updateTelemetryFromServer(); @@ -168,7 +178,7 @@ class MapPageComponent extends AuthComponent { {this.renderTelemetryConsole()}

P@4)a_r~|9s^pr&)++$|_as)D8dm6k8#Wd#ZnK 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 literal 0 HcmV?d00001 diff --git a/monkey/monkey_island/cc/ui/src/images/nodes/monkey_windows_starting.png b/monkey/monkey_island/cc/ui/src/images/nodes/monkey_windows_starting.png new file mode 100644 index 0000000000000000000000000000000000000000..1545280b42802f9377766e1b1a27747df2cb7890 GIT binary patch literal 97173 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 z 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∈hm#Vho#8)7iZ3@j%&Y(ayd9UM@p>5 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