commit fedfa92efce06dfe2339d9cc77b2d051331d8abd Author: shane Date: Sat Jan 21 12:06:10 2023 -0600 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8d7b42e --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +_site +.sass-cache +.jekyll-cache +.jekyll-metadata +vendor + +.DS_Store diff --git a/404.html b/404.html new file mode 100644 index 0000000..52f1c88 --- /dev/null +++ b/404.html @@ -0,0 +1,11 @@ +--- +permalink: /404.html +layout: home +--- + +
+

404

+ +

You're in the wrong place. Go /home.

+

:wq

+
diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..0fa7722 --- /dev/null +++ b/Gemfile @@ -0,0 +1,30 @@ +source "https://rubygems.org" +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "jekyll", "~> 4.1.1" +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.5" +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins +# If you have any plugins, put them here! +# group :jekyll_plugins do +# gem "jekyll-feed", "~> 0.12" +# end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +# platforms :mingw, :x64_mingw, :mswin, :jruby do +# gem "tzinfo", "~> 1.2" +# gem "tzinfo-data" +# end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] +gem "jekyll-theme-console" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..af64317 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,84 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) + colorator (1.1.0) + concurrent-ruby (1.1.10) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.15.5) + forwardable-extended (2.6.0) + http_parser.rb (0.8.0) + i18n (1.12.0) + concurrent-ruby (~> 1.0) + jekyll (4.1.1) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (~> 2.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.4.0) + pathutil (~> 0.9) + rouge (~> 3.0) + safe_yaml (~> 1.0) + terminal-table (~> 1.8) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-sass-converter (2.2.0) + sassc (> 2.0.1, < 3.0) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-theme-console (0.4.0) + jekyll (>= 3.5) + jekyll-seo-tag + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.8.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (5.0.1) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.5) + rouge (3.30.0) + safe_yaml (1.0.5) + sassc (2.4.0) + ffi (~> 1.9) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + unicode-display_width (1.8.0) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll (~> 4.1.1) + jekyll-feed (~> 0.12) + jekyll-theme-console + minima (~> 2.5) + tzinfo (~> 1.2) + tzinfo-data + wdm (~> 0.1.1) + +BUNDLED WITH + 2.1.4 diff --git a/README.md b/README.md new file mode 100644 index 0000000..17c16f3 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# [distrust.co](https://distrust.co) + +Web page source. + +## Instructions + +1. Install [Ruby](https://www.ruby-lang.org/en/documentation/installation/) +2. Install [Jekyll](https://jekyllrb.com/docs/installation/) +3. +```shell +$ jekyll build +``` +4. Extract contents from `_site` directory. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..0aeb11f --- /dev/null +++ b/_config.yml @@ -0,0 +1,60 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. +# +# If you need help with YAML syntax, here are some quick references for you: +# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml +# https://learnxinyminutes.com/docs/yaml/ +# +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. + +title: Distrust +email: lance@distrust.co +description: >- # this means to ignore newlines until "baseurl:" + Trust + Nothing +baseurl: "" # the subpath of your site, e.g. /blog +url: "https://distrust.co" # the base hostname & protocol for your site, e.g. http://example.com + +header_pages: + - index.md + - about.md + - contact.md + +style: dark # dark (default), light or hacker +listen_for_clients_preferred_style: false # false (default) or true + +footer: '2023 Distrust, LLC' + +# Build settings +theme: jekyll-theme-console + +# Exclude from processing. +# The following items will not be processed, by default. +# Any item listed under the `exclude:` key here will be automatically added to +# the internal "default list". +# +# Excluded items can be processed by explicitly listing the directories or +# their entries' file path in the `include:` list. +# +# exclude: +# - .sass-cache/ +# - .jekyll-cache/ +# - gemfiles/ +# - Gemfile +# - Gemfile.lock +# - node_modules/ +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..d3859e1 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,3 @@ + diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..fff6310 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,14 @@ + + + + + {{ page.title }} + + {% if page.robots %} + + {% endif %} + + + + + diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..8ae8380 --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,14 @@ +{%- assign page_paths = site.header_pages | default: default_paths -%} +
+ +
diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..8f446ef --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,20 @@ + + + +{%- include head.html -%} + + +
+ + {%- include header.html -%} + +
+ {{ content }} +
+ + {%- include footer.html -%} + +
+ + + diff --git a/_layouts/home.html b/_layouts/home.html new file mode 100644 index 0000000..801acaa --- /dev/null +++ b/_layouts/home.html @@ -0,0 +1,7 @@ +--- +layout: default +--- + +{{ content }} +{% assign contentwonl = content | strip_newlines %} {% unless contentwonl == "" %}
{% endunless %} +{%- assign date_format = "%Y-%m-%d" -%} diff --git a/_sass/_dark.scss b/_sass/_dark.scss new file mode 100644 index 0000000..2592f6a --- /dev/null +++ b/_sass/_dark.scss @@ -0,0 +1,32 @@ +/** + * Dark theme variables + */ + +:root { + --base-color: #FFFFFF; + --border: solid 2px rgba(219, 219, 219, 0.9); + --selection-background: rgba(219, 219, 219, 0.99); + --selection-text: #000; + --background-color: #424242; + --text-color: var(--base-color); + --placeholder-color: var(--base-color); + --link-color: var(--base-color); + --code-color-1: #aaaaaa; + --code-color-2: #ffffcc; + --code-color-3: #F00000; + --code-color-4: #F0A0A0; + --code-color-5: #b38aff; + --code-color-6: #5ba711; + --code-color-7: #e4e477; + --code-color-8: #000080; + --code-color-9: #05ca05; + --code-color-10: #888888; + --code-color-11: #555555; + --code-color-12: #800080; + --code-color-13: #00d4d4; + --code-color-14: #00c1c1; + --code-color-15: #ed9d13; + --code-color-16: #1e90ff; + --code-color-17: #800000; + --code-color-18: #bbbbbb; +} diff --git a/_sass/_light.scss b/_sass/_light.scss new file mode 100644 index 0000000..3515c95 --- /dev/null +++ b/_sass/_light.scss @@ -0,0 +1,32 @@ +/** + * Base variables + */ + +:root { + --base-color: #000; + --border: dashed 1px rgba(0, 0, 0, 1); + --selection-background: rgba(0, 0, 0, 0.99); + --selection-text: #FFF; + --background-color: #FFF; + --text-color: var(--base-color); + --placeholder-color: var(--base-color); + --link-color: var(--base-color); + --code-color-1: #aaaaaa; + --code-color-2: #ffffcc; + --code-color-3: #F00000; + --code-color-4: #F0A0A0; + --code-color-5: #0000aa; + --code-color-6: #4c8317; + --code-color-7: #aa0000; + --code-color-8: #000080; + --code-color-9: #00aa00; + --code-color-10: #888888; + --code-color-11: #555555; + --code-color-12: #800080; + --code-color-13: #00aaaa; + --code-color-14: #009999; + --code-color-15: #aa5500; + --code-color-16: #1e90ff; + --code-color-17: #800000; + --code-color-18: #bbbbbb; +} diff --git a/_sass/base.scss b/_sass/base.scss new file mode 100644 index 0000000..c2f4630 --- /dev/null +++ b/_sass/base.scss @@ -0,0 +1,151 @@ +@charset "utf-8"; +// @import url('https://fonts.googleapis.com/css?family=Rubik:400,700'); +// @import url('Rubik-VariableFont_wght.ttf'); + +@font-face { + font-family: 'Rubik'; + src: url('fonts/Rubik-VariableFont_wght.ttf') format('truetype'); +} + +/** + * Style variables + */ +$base-font-family: 'Rubik', monospace !default; +$base-font-size: 12.5px !default; +$mobile-font-size: 12px !default; +$base-line-height: 1.5 !default; +$container-width: 90% !default; +$container-max-width: 800px !default; + +/** + * Global + */ +body { background-color: var(--background-color); margin: 0 auto; padding: 0; font-family: $base-font-family; font-size: $base-font-size; color: var(--text-color); text-align: left; line-height: $base-line-height !important; } +h1 { font-size: 32px; } +h2 { font-size: 28px; } +h3 { font-size: 24px; } +h4 { font-size: 20px; } +h5 { font-size: 18px; } +h6 { font-size: 16px; } +h1, h2, h3, h4, h5, h6 { margin: 0px; margin-top: 12px; margin-bottom: 12px; font-weight: bold; color: var(--text-color); } +p, ul, ol { margin: 0px; color: var(--text-color); } +a { text-decoration: underline; color: var(--link-color); } +a:hover { color: var(--background-color); background-color: var(--base-color); } +@media only screen and (max-device-width: 500px) { * { font-size: $mobile-font-size; } } + +/** + * Layout + */ +.container { width: $container-width; max-width: $container-max-width; margin-right: auto; margin-left: auto; } +p { word-wrap: break-word; word-break: break-word; white-space: pre-wrap; margin-bottom: 15px; } +footer { color: var(--text-color); border-top: var(--border); margin-top: 0; padding-top: 10px; text-align: right; } +header { margin-top: 20px; margin-bottom: 10px; } +header p { text-align: left; margin: 0; } +footer { margin-bottom: 20px; } +hr { margin-top: 20px; } + +/** + * Menu Logo + */ +.menu-logo { position: absolute; } + +/** + * Highlight/Markup + */ +::selection { background: var(--selection-background); color: var(--selection-text); } +::-moz-selection { background: var(--selection-background); color: var(--selection-text); } + +/** + * Lists + */ +:not(.menu) > ul { list-style: none; } +:not(.menu) > ul { list-style-type: none; } +:not(.menu) > ul > li:before { content: "-"; margin-right: 9px; } + +/** + * Header/Navigation + */ +.menu { border-bottom: var(--border); margin-bottom: 20px; } +.menu ul { margin-top: 12px; margin-bottom: 12px; padding-left: 0px; list-style-type: none; text-align: right; } +.menu ul li { display: inline; margin-left: 10px; } +.menu ul li a { text-decoration: none; color: var(--text-color); } +.menu ul li a:hover { text-decoration: none; color: var(--background-color); background-color: var(--base-color); } + +/** + * Form + */ +input, select, textarea { padding: 0; margin: 0; -webkit-appearance: none; -webkit-border-radius: 0; border: none; } +input[type=text], select, textarea { width: 100%; resize: none; background-color: var(--background-color); color: var(--text-color); caret-color: var(--text-color); font-size: $base-font-size; font-family: $base-font-family; line-height: $base-line-height; } +input, select, textarea, textarea::-webkit-input-placeholder { text-indent: 0px; } +::placeholder { color: var(--placeholder-color); opacity: 1; } +:-ms-input-placeholder { color: var(--placeholder-color); } +::-ms-input-placeholder { color: var(--placeholder-color); } +input[type=submit] { font-size: $base-font-size; font-family: $base-font-family; line-height: $base-line-height; cursor: pointer; color: var(--link-color); background-color: var(--background-color); } +input[type=submit]:hover { color: var(--background-color); background-color: var(--base-color); } +*:focus { outline: none; } +textarea { vertical-align: top; } + +/** + * Code and syntax highlighting + */ +.lineno { color: var(--code-color-1); margin-right: 15px; } +figure.highlight { margin: 5px 0; } +pre { background-color: var(--background-color); border: none; padding: 0; margin: 0; overflow:auto; font-size: $base-font-size; color: var(--text-color); line-height: 1.7 !important; font-family: $base-font-family !important; } +.highlight .hll { background-color: var(--code-color-2); } +.highlight .c { color: var(--code-color-1); font-style: italic } /* Comment */ +.highlight .err { color: var(--code-color-3); background-color: var(--code-color-4); } /* Error */ +.highlight .k { color: var(--code-color-5); } /* Keyword */ +.highlight .cm { color: var(--code-color-1); font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: var(--code-color-6); } /* Comment.Preproc */ +.highlight .c1 { color: var(--code-color-1); font-style: italic } /* Comment.Single */ +.highlight .cs { color: var(--code-color-5); font-style: italic } /* Comment.Special */ +.highlight .gd { color: var(--code-color-7); } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: var(--code-color-7); } /* Generic.Error */ +.highlight .gh { color: var(--code-color-8); font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: var(--code-color-9); } /* Generic.Inserted */ +.highlight .go { color: var(--code-color-10); } /* Generic.Output */ +.highlight .gp { color: var(--code-color-11); } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: var(--code-color-12); font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: var(--code-color-7); } /* Generic.Traceback */ +.highlight .kc { color: var(--code-color-5); } /* Keyword.Constant */ +.highlight .kd { color: var(--code-color-5); } /* Keyword.Declaration */ +.highlight .kn { color: var(--code-color-5); } /* Keyword.Namespace */ +.highlight .kp { color: var(--code-color-5); } /* Keyword.Pseudo */ +.highlight .kr { color: var(--code-color-5); } /* Keyword.Reserved */ +.highlight .kt { color: var(--code-color-13); } /* Keyword.Type */ +.highlight .m { color: var(--code-color-14); } /* Literal.Number */ +.highlight .s { color: var(--code-color-15); } /* Literal.String */ +.highlight .na { color: var(--code-color-16); } /* Name.Attribute */ +.highlight .nb { color: var(--code-color-13); } /* Name.Builtin */ +.highlight .nc { color: var(--code-color-9); text-decoration: underline } /* Name.Class */ +.highlight .no { color: var(--code-color-7); } /* Name.Constant */ +.highlight .nd { color: var(--code-color-10); } /* Name.Decorator */ +.highlight .ni { color: var(--code-color-17); font-weight: bold } /* Name.Entity */ +.highlight .nf { color: var(--code-color-9); } /* Name.Function */ +.highlight .nn { color: var(--code-color-13); text-decoration: underline } /* Name.Namespace */ +.highlight .nt { color: var(--code-color-16); font-weight: bold } /* Name.Tag */ +.highlight .nv { color: var(--code-color-7); } /* Name.Variable */ +.highlight .ow { color: var(--code-color-5); } /* Operator.Word */ +.highlight .w { color: var(--code-color-18); } /* Text.Whitespace */ +.highlight .mf { color: var(--code-color-14); } /* Literal.Number.Float */ +.highlight .mh { color: var(--code-color-14); } /* Literal.Number.Hex */ +.highlight .mi { color: var(--code-color-14); } /* Literal.Number.Integer */ +.highlight .mo { color: var(--code-color-14); } /* Literal.Number.Oct */ +.highlight .sb { color: var(--code-color-15); } /* Literal.String.Backtick */ +.highlight .sc { color: var(--code-color-15); } /* Literal.String.Char */ +.highlight .sd { color: var(--code-color-15); } /* Literal.String.Doc */ +.highlight .s2 { color: var(--code-color-15); } /* Literal.String.Double */ +.highlight .se { color: var(--code-color-15); } /* Literal.String.Escape */ +.highlight .sh { color: var(--code-color-15); } /* Literal.String.Heredoc */ +.highlight .si { color: var(--code-color-15); } /* Literal.String.Interpol */ +.highlight .sx { color: var(--code-color-15); } /* Literal.String.Other */ +.highlight .sr { color: var(--code-color-14); } /* Literal.String.Regex */ +.highlight .s1 { color: var(--code-color-15); } /* Literal.String.Single */ +.highlight .ss { color: var(--code-color-5); } /* Literal.String.Symbol */ +.highlight .bp { color: var(--code-color-13); } /* Name.Builtin.Pseudo */ +.highlight .vc { color: var(--code-color-7); } /* Name.Variable.Class */ +.highlight .vg { color: var(--code-color-7); } /* Name.Variable.Global */ +.highlight .vi { color: var(--code-color-7); } /* Name.Variable.Instance */ +.highlight .il { color: var(--code-color-14); } /* Literal.Number.Integer.Long */ diff --git a/about.md b/about.md new file mode 100644 index 0000000..db52405 --- /dev/null +++ b/about.md @@ -0,0 +1,80 @@ +--- +title: /about +layout: home +permalink: /about +--- + +## Approach + +Like most security firms, we often start relationships with full stack audits. We also have enough experience in this industry to admit another firm will find bugs we missed, and vice versa. Our true goal in audits is to understand your threat model and find a path to fundamentally remove entire classes of relevant attack surface. + +We tend to start with a consultation where try to help you understand your true attack surface by answering tough questions: + +- Can your Google Authenticator codes be phished? +- Can your SMS 2FA solution be SIM Swapped? +- Can someone tamper with your Git repos or CI/CD systems? +- Would it be profitable for someone to buy a $50,000 0day to compromise employee devices? +- What happens when the FedEx guy leaves a tampered USB C cable on a conference table? +- Who reviews the code of your third party dependencies? +- What happens when your IT administrator is compromised? Or a production engineer? +- Can a change in local political landscape fundamentally halt your business? +- Can someone buy a server next to yours and steal your secrets via a side channel attack? +- How do know the offline laptop with the keys to the kingdom has not been tampered with? +- Do you have a plan for when your production systems are compromised? + +--- + +## Values + +### Distrust + +- We will never ask you to give us access to production systems or have any power over your org. +- Anyone with access to significant value is at personal risk. We teach distrust to protect people. +- We will always provide a way for you to build and verify any binaries we provide yourself +- We are happy to provide you any background research we legally can so you can make your own conclusions + +### Transparency + +- We regularly open source our research and common advice to get input and corrections from others in our industry +- Prices are always public. We will sometimes adjust based on demand, but everyone is offered the same rates + - With the exception of fully Open Source projects, which we offer a universal 15% discount on. + +### Security + +- Our internal threat model assumes well funded entities are interested in our clients and our work +- All client work is performed in dedicated local virtual machines under an offline host OS +- All authentication, and password management is done via dedicated pin+touch controlled personal HSMs. +- We exclusively use End-To-End cross-verified encrypted chat internally. + +### Privacy + +- Your data and IP are always stored with AES256 encryption unlockable only with our personal HSMs. +- Your data and IP are never exposed in plain text except on your systems or systems we physically control +- Everyone on our team has hardware-backed PGP keys to encrypt documents and emails if you prefer + +### Freedom + +- We feel every customer has a path to not need us anymore, and we will encourage it. +- We exclusively use Open Source internally and help make improvements when needed +- All general purpose security tools and research we create is Open Source by default. +- We ensure you have a free path to replicate any of our findings yourself +- We will always favor solutions that minimize lock-in with third parties. + +--- + +## Services + +- Reproducible builds + - Build all software multiple times in systems controlled by different teams + - Ensure hashes match, proving code and binaries were not tampered with + - We optionally can host and maintain secondary build infrastructure. +- Cryptographic key escrow +- Quorum managed immutable infrastructure +- Software Supply Chain Integrity +- Production Engineering Security +- Security Hiring +- Retained security support +- Hardware Security Modules +- Physical Security +- Business Continuity Planning + - Planning for Black Swan events. diff --git a/assets/base/distrust-text-white.svg b/assets/base/distrust-text-white.svg new file mode 100644 index 0000000..ccbab5c --- /dev/null +++ b/assets/base/distrust-text-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/base/distrust-white.svg b/assets/base/distrust-white.svg new file mode 100644 index 0000000..ab90aaf --- /dev/null +++ b/assets/base/distrust-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/fonts/Rubik-VariableFont_wght.ttf b/assets/fonts/Rubik-VariableFont_wght.ttf new file mode 100644 index 0000000..fa161b9 Binary files /dev/null and b/assets/fonts/Rubik-VariableFont_wght.ttf differ diff --git a/contact.md b/contact.md new file mode 100644 index 0000000..61e2ad7 --- /dev/null +++ b/contact.md @@ -0,0 +1,21 @@ +--- +title: /contact +layout: home +permalink: /contact +--- + +## Team + +- Lance Vick \<[lance@distrust.co](mailto:lance@distrust.co)\> [6B61 ECD7 6088 748C 7059 0D55 E90A 4013 36C8 AAA9](https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x6b61ecd76088748c70590d55e90a401336c8aaa9) +- Ryan Heywood \<[ryan@distrust.co](mailto:ryan@distrust.co)\> [8882 3A75 ECAA 786B 0FF3 8B14 8E40 1478 A3FB EF72](https://keys.openpgp.org/vks/v1/by-fingerprint/88823A75ECAA786B0FF38B148E401478A3FBEF72) +- Anton Leviathon +- Shane Engelman \<[shane@distrust.co](mailto:shane@distrust.co)\> [3D7C 8D39 E8C4 DF77 1583 D3F0 A8A0 91FD 3460 01CA](https://keys.openpgp.org/vks/v1/by-fingerprint/3D7C8D39E8C4DF771583D3F0A8A091FD346001CA) + +## Sales + +- [sales@distrust.co](mailto:sales@distrust.co) + + +## General + +- [team@distrust.co](mailto:team@distrust.co) diff --git a/index.md b/index.md new file mode 100644 index 0000000..7a92f9b --- /dev/null +++ b/index.md @@ -0,0 +1,9 @@ +--- +title: /home +layout: home +permalink: / +--- + +We are a group of pentesters, software engineers, and security architects that believe security compromises to your systems and personnel are *inevitable*. + +We specialize in helping you understand and mitigate the hard security problems most won't see coming._