

{"id":11685,"date":"2018-12-23T17:28:00","date_gmt":"2018-12-23T22:28:00","guid":{"rendered":"https:\/\/rud.is\/b\/?p=11685"},"modified":"2018-12-23T17:28:47","modified_gmt":"2018-12-23T22:28:47","slug":"certifiably-gone-phishing","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/","title":{"rendered":"Certifiably Gone Phishing"},"content":{"rendered":"<p>Phishing is [still] the primary way attackers either commit a primary criminal act (i.e. phish a target to, say, install ransomware) or is the initial vehicle used to gain a foothold in an organization so they can perform other criminal operations to achieve some goal. As such, security teams, vendors and active members of the cybersecurity community work diligently to neutralize phishing campaigns as quickly as possible.<\/p>\n<p>One popular community tool\/resource in this pursuit is <a href=\"https:\/\/www.phishtank.com\/\">PhishTank<\/a> which <em>is a collaborative clearing house for data and information about phishing on the Internet. Also, PhishTank provides an open API for developers and researchers to integrate anti-phishing data into their applications at no charge.<\/em><\/p>\n<p>While the PhishTank API is useful for real-time anti-phishing operations the data is also useful for security researchers as we work to understand the ebb, flow and evolution of these attacks. One avenue of research is to track the various features associated with phishing campaigns which include (amongst many other elements) network (internet) location of the phishing site, industry being targeted, domain names being used, what type of sites are being cloned\/copied and a feature we&#8217;ll be looking at in this post: what percentage of new phishing sites use SSL encryption and &mdash; of these &mdash; which type of SSL certificates are &#8220;en vogue&#8221;.<\/p>\n<p>Phishing sites are increasingly using and relying on SSL certificates because we in the information security industry spent a decade instructing the general internet surfing population to trust sites with the green lock icon near the location bar. Initially, phishers worked to compromise existing, encryption-enabled web properties to install phishing sites\/pages since they could leech off of the &#8220;trusted&#8221; status of the associated SSL certificates. However, the advent of services like <a href=\"https:\/\/letsencrypt.org\/\">Let&#8217;s Encrypt<\/a> have made it possible for attacker to setup their own phishing domains that look legitimate to current-generation internet browsers and prey upon the decade&#8217;s old &#8220;trust the lock icon&#8221; mantra that most internet users still believe. We&#8217;ll table that path of discussion (since it&#8217;s fraught with peril if you don&#8217;t support the internet-do-gooder-consequences-be-darned cabal&#8217;s personal agendas) and just focus on how to work with PhishTank data in R and take a look at the most prevalent SSL certs used in the past week (you can extend the provided example to go back as far as you like provided the phishing sites are still online).<\/p>\n<h3>Accessing PhishTank From R<\/h3>\n<p>You can use the <code>aquarium<\/code> package [<a href=\"https:\/\/gitlab.com\/hrbrmstr\/aquarium\">GL<\/a>|<a href=\"https:\/\/gihub.com\/hrbrmstr\/aquarium\">GH<\/a>] to gain access to the data provided by PhishTank&#8217;s API (you need to sign up for access and put you API key into the <code>PHISHTANK_API_KEY<\/code> environment variable which is best done via your <code>~\/.Renviron<\/code> file).<\/p>\n<p>Let&#8217;s setup all the packages we&#8217;ll need and cache a current copy of the PhishTank data. The package forces you to utilize your own caching strategy since it doesn&#8217;t make sense for it to decide that for you. I&#8217;d suggest either using the time-stamped approach below or using some type of database system (or, say, Apache Drill) to actually manage the data.<\/p>\n<p>Here are the packages we&#8217;ll need:<\/p>\n<pre><code class=\"language-r\">library(psl) # git[la|hu]b\/hrbrmstr\/psl\nlibrary(curlparse) # git[la|hu]b\/hrbrmstr\/curlparse\nlibrary(aquarium) # git[la|hu]b\/hrbrmstr\/aquarium\nlibrary(gt) # github\/rstudio\/gt\nlibrary(furrr)\nlibrary(stringi)\nlibrary(openssl)\nlibrary(tidyverse)\n<\/code><\/pre>\n<p>NOTE: The <code>psl<\/code> and <code>curlparse<\/code> packages are optional. Windows users will find it difficult to get them working and it may be easier to review the functions provided by the <code>urlparse<\/code> package and substitute equivalents for the <code>domain()<\/code> and <code>apex_domain()<\/code> functions used below. Now, we get a copy of the current PhishTank dataset &amp; cache it:<\/p>\n<pre><code class=\"language-r\">if (!file.exists(\"~\/Data\/2018-12-23-fishtank.rds\")) {\n  xdf &lt;- pt_read_db()\n  saveRDS(xdf, \"~\/Data\/2018-12-23-fishtank.rds\")\n} else {\n  xdf &lt;- readRDS(\"~\/Data\/2018-12-23-fishtank.rds\")\n}\n<\/code><\/pre>\n<p>Let&#8217;s take a look:<\/p>\n<pre><code class=\"language-r\">glimpse(xdf)\n## Observations: 16,446\n## Variables: 9\n## $ phish_id          &lt;chr&gt; \"5884184\", \"5884138\", \"5884136\", \"5884135\", ...\n## $ url               &lt;chr&gt; \"http:\/\/internetbanking-bancointer.com.br\/lo...\n## $ phish_detail_url  &lt;chr&gt; \"http:\/\/www.phishtank.com\/phish_detail.php?p...\n## $ submission_time   &lt;dttm&gt; 2018-12-22 20:45:09, 2018-12-22 18:40:24, 2...\n## $ verified          &lt;chr&gt; \"yes\", \"yes\", \"yes\", \"yes\", \"yes\", \"yes\", \"y...\n## $ verification_time &lt;dttm&gt; 2018-12-22 20:45:52, 2018-12-22 21:26:49, 2...\n## $ online            &lt;chr&gt; \"yes\", \"yes\", \"yes\", \"yes\", \"yes\", \"yes\", \"y...\n## $ details           &lt;list&gt; [&lt;209.132.252.7, 209.132.252.0\/24, 7296 468...\n## $ target            &lt;chr&gt; \"Other\", \"Other\", \"Other\", \"PayPal\", \"Other\"...\n<\/code><\/pre>\n<p>The data is really straightforward. We have unique ids for each site\/campaign the URL of the site along with a URL to extra descriptive info PhishTank has on the site\/campaign. We also know when the site was submitted\/discovered and other details, such as the network\/internet space the site is in:<\/p>\n<pre><code class=\"language-r\">glimpse(xdf$details[1])\n## List of 1\n##  $ :'data.frame':    1 obs. of  6 variables:\n##   ..$ ip_address        : chr \"209.132.252.7\"\n##   ..$ cidr_block        : chr \"209.132.252.0\/24\"\n##   ..$ announcing_network: chr \"7296 468\"\n##   ..$ rir               : chr \"arin\"\n##   ..$ country           : chr \"US\"\n##   ..$ detail_time       : chr \"2018-12-23T01:46:16+00:00\"\n<\/code><\/pre>\n<p>We&#8217;re going to focus on recent phishing sites (in this case, ones that are less than a week old) and those that use SSL certificates:<\/p>\n<pre><code class=\"language-r\">filter(xdf, verified == \"yes\") %&gt;%\n  filter(online == \"yes\") %&gt;%\n  mutate(diff = as.numeric(difftime(Sys.Date(), verification_time), \"days\")) %&gt;%\n  filter(diff &lt;= 7) %&gt;%\n  { all_ct &lt;&lt;- nrow(.) ; . } %&gt;%\n  filter(grepl(\"^https\", url)) %&gt;%\n  { ssl_ct &lt;&lt;- nrow(.) ; . } %&gt;%\n  mutate(\n    domain = domain(url),\n    apex = apex_domain(domain)\n  ) -&gt; recent\n<\/code><\/pre>\n<p>Let&#8217;s ee how many are using SSL:<\/p>\n<pre><code class=\"language-r\">(ssl_ct)\n## [1] 383\n\n(pct_ssl &lt;- ssl_ct \/ all_ct)\n## [1] 0.2919207\n<\/code><\/pre>\n<p>This percentage is lower than a recent &#8220;50% of all phishing sites use encryption&#8221; statistic going around of late. There are many reasons for the difference:<\/p>\n<ul>\n<li>PhishTank doesn&#8217;t have <em>all<\/em> phishing sites in it<\/li>\n<li>We just looked at a week of examples<\/li>\n<li>Some sites were offline at the time of access attempt<\/li>\n<li>Diverse attacker groups with varying degrees of competence engage in phishing attacks<\/li>\n<\/ul>\n<p>Despite the 20% deviation, 30% is still a decent percentage, and a green, &#8220;everything&#8217;s ??&#8221; icon is a still a valued prize so we shall pursue our investigation.<\/p>\n<p>Now we need to retrieve all those certs. This can be a slow operation that so we&#8217;ll grab them in parallel. It&#8217;s also quite possible the &#8220;online&#8221;status above data frame glimpse is inaccurate (sites can go offline quickly) so we&#8217;ll catch certificate request failures with <code>safely()<\/code> and cache the results:<\/p>\n<pre><code class=\"language-r\">cert_dl &lt;- purrr::safely(openssl::download_ssl_cert)\n\nplan(multiprocess)\n\nif (!file.exists(\"~\/Data\/recent.rds\")) {\n\n  recent &lt;- mutate(recent, cert = future_map(domain, cert_dl))\n  saveRDS(recent, \"~\/Data\/recent.rds\")\n\n} else {\n  recent &lt;- readRDS(\"~\/Data\/recent.rds\")\n}\n<\/code><\/pre>\n<p>Let see how many request failures we had:<\/p>\n<pre><code class=\"language-r\">(failed &lt;- sum(map_lgl(recent$cert, ~is.null(.x$result))))\n## [1] 25\n\n(failed \/ nrow(recent))\n## [1] 0.06527415\n<\/code><\/pre>\n<p>As noted in the introduction to the blog, when attackers want to use SSL for the lock icon ruse they can either try to piggyback off of legitimate domains or rely on Let&#8217;s Encrypt to help them commit crimes. Let&#8217;s see what the top p&#8221;apex&#8221; domains](https:\/\/help.github.com\/articles\/about-supported-custom-domains\/#apex-domains) were in use in the past week:<\/p>\n<pre><code class=\"language-r\">count(recent, apex, sort = TRUE)\n## # A tibble: 255 x 2\n##    apex                              n\n##    &lt;chr&gt;                         &lt;int&gt;\n##  1 000webhostapp.com                42\n##  2 google.com                       17\n##  3 umbler.net                        8\n##  4 sharepoint.com                    6\n##  5 com-fl.cz                         5\n##  6 lbcpzonasegurabeta-viabcp.com     4\n##  7 windows.net                       4\n##  8 ashaaudio.net                     3\n##  9 brijprints.com                    3\n## 10 portaleisp.com                    3\n## # ... with 245 more rows\n<\/code><\/pre>\n<p>We can see that a large hosting provider (<code>000webhostapp.com<\/code>) bore a decent number of these sites, but Google Sites (which is what the full domain represented by the <code>google.com<\/code> apex domain here is usually pointing to) Microsoft SharePoint (<code>sharepoint.com<\/code>) and Microsoft forums (<code>windows.net<\/code>) are in active use as well (which is smart give the pervasive trust associated with those properties). There are 241 distinct apex domains in this 1-week set so what is the SSL cert diversity across these pages\/campaigns?<\/p>\n<p>We ultimately used <code>openssl::download_ssl_cert<\/code> to retrieve the SSL certs of each site that was online, so let&#8217;s get the <a href=\"https:\/\/letsencrypt.org\/certificates\/\">issuer and intermediary certs<\/a> from them and look at the prevalence of each. We&#8217;ll extract the fields from the <code>issuer<\/code> component returned by <code>openssl::download_ssl_cert<\/code> then just do some basic maths:<\/p>\n<pre><code class=\"language-r\">filter(recent, map_lgl(cert, ~!is.null(.x$result))) %&gt;%\n  mutate(issuers = map(cert, ~map_chr(.x$result, ~.x$issuer))) %&gt;%\n  mutate(\n    inter = map_chr(issuers, ~.x[1]), # the order is not guaranteed here but the goal of the exercise is\n    root = map_chr(issuers, ~.x[2])   # to get you working with the data vs build a 100% complete solution\n  ) %&gt;%\n  mutate(\n    inter = stri_replace_all_regex(inter, \",([[:alpha:]])+=\", \";;;$1=\") %&gt;%\n      stri_split_fixed(\";;;\") %&gt;% # there are parswers for the cert info fields but this hack is quick and works\n      map(stri_split_fixed, \"=\", 2, simplify = TRUE) %&gt;%\n      map(~setNames(as.list(.x[,2]), .x[,1])) %&gt;%\n      map(bind_cols),\n    root = stri_replace_all_regex(root, \",([[:alpha:]])+=\", \";;;$1=\") %&gt;%\n      stri_split_fixed(\";;;\") %&gt;%\n      map(stri_split_fixed, \"=\", 2, simplify = TRUE) %&gt;%\n      map(~setNames(as.list(.x[,2]), .x[,1])) %&gt;%\n      map(bind_cols)\n  ) -&gt; recent\n<\/code><\/pre>\n<p>Let&#8217;s take a look at roots:<\/p>\n<pre><code class=\"language-r\">unnest(recent, root) %&gt;%\n  distinct(phish_id, apex, CN) %&gt;%\n  count(CN, sort = TRUE) %&gt;%\n  mutate(pct = n\/sum(n)) %&gt;%\n  gt::gt() %&gt;%\n  gt::fmt_number(\"n\", decimals = 0) %&gt;%\n  gt::fmt_percent(\"pct\")\n<\/code><\/pre>\n<p><!--html_preserve--><\/p>\n<style>html {\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;\n}<\/p>\n<p>#osjojorroc .gt_table {\n  border-collapse: collapse;\n  margin-left: auto;\n  margin-right: auto;\n  color: #000000;\n  font-size: 16px;\n  background-color: #FFFFFF;\n  \/* table.background.color <em>\/\n  width: auto;\n  \/<\/em> table.width <em>\/\n  border-top-style: solid;\n  \/<\/em> table.border.top.style <em>\/\n  border-top-width: 2px;\n  \/<\/em> table.border.top.width <em>\/\n  border-top-color: #A8A8A8;\n  \/<\/em> table.border.top.color *\/\n}<\/p>\n<p>#osjojorroc .gt_heading {\n  background-color: #FFFFFF;\n  \/* heading.background.color *\/\n  border-bottom-color: #FFFFFF;\n}<\/p>\n<p>#osjojorroc .gt_title {\n  color: #000000;\n  font-size: 125%;\n  \/* heading.title.font.size <em>\/\n  padding-top: 4px;\n  \/<\/em> heading.top.padding *\/\n  padding-bottom: 1px;\n  border-bottom-color: #FFFFFF;\n  border-bottom-width: 0;\n}<\/p>\n<p>#osjojorroc .gt_subtitle {\n  color: #000000;\n  font-size: 85%;\n  \/* heading.subtitle.font.size <em>\/\n  padding-top: 1px;\n  padding-bottom: 4px;\n  \/<\/em> heading.bottom.padding *\/\n  border-top-color: #FFFFFF;\n  border-top-width: 0;\n}<\/p>\n<p>#osjojorroc .gt_bottom_border {\n  border-bottom-style: solid;\n  \/* heading.border.bottom.style <em>\/\n  border-bottom-width: 2px;\n  \/<\/em> heading.border.bottom.width <em>\/\n  border-bottom-color: #A8A8A8;\n  \/<\/em> heading.border.bottom.color *\/\n}<\/p>\n<p>#osjojorroc .gt_column_spanner {\n  border-bottom-style: solid;\n  border-bottom-width: 2px;\n  border-bottom-color: #A8A8A8;\n  padding-top: 4px;\n  padding-bottom: 4px;\n}<\/p>\n<p>#osjojorroc .gt_col_heading {\n  color: #000000;\n  background-color: #FFFFFF;\n  \/* column_labels.background.color <em>\/\n  font-size: 16px;\n  \/<\/em> column_labels.font.size <em>\/\n  font-weight: initial;\n  \/<\/em> column_labels.font.weight *\/\n  padding: 10px;\n  margin: 10px;\n}<\/p>\n<p>#osjojorroc .gt_sep_right {\n  border-right: 5px solid #FFFFFF;\n}<\/p>\n<p>#osjojorroc .gt_group_heading {\n  padding: 8px;\n  color: #000000;\n  background-color: #FFFFFF;\n  \/* stub_group.background.color <em>\/\n  font-size: 16px;\n  \/<\/em> stub_group.font.size <em>\/\n  font-weight: initial;\n  \/<\/em> stub_group.font.weight <em>\/\n  border-top-style: solid;\n  \/<\/em> stub_group.border.top.style <em>\/\n  border-top-width: 2px;\n  \/<\/em> stub_group.border.top.width <em>\/\n  border-top-color: #A8A8A8;\n  \/<\/em> stub_group.border.top.color <em>\/\n  border-bottom-style: solid;\n  \/<\/em> stub_group.border.bottom  .style <em>\/\n  border-bottom-width: 2px;\n  \/<\/em> stub_group.border.bottom  .width <em>\/\n  border-bottom-color: #A8A8A8;\n  \/<\/em> stub_group.border.bottom  .color *\/\n}<\/p>\n<p>#osjojorroc .gt_empty_group_heading {\n  padding: 0.5px;\n  color: #000000;\n  background-color: #FFFFFF;\n  \/* stub_group.background.color <em>\/\n  font-size: 16px;\n  \/<\/em> stub_group.font.size <em>\/\n  font-weight: initial;\n  \/<\/em> stub_group.font.weight <em>\/\n  border-top-style: solid;\n  \/<\/em> stub_group.border.top.style <em>\/\n  border-top-width: 2px;\n  \/<\/em> stub_group.border.top.width <em>\/\n  border-top-color: #A8A8A8;\n  \/<\/em> stub_group.border.top.color <em>\/\n  border-bottom-style: solid;\n  \/<\/em> stub_group.border.bottom  .style <em>\/\n  border-bottom-width: 2px;\n  \/<\/em> stub_group.border.bottom  .width <em>\/\n  border-bottom-color: #A8A8A8;\n  \/<\/em> stub_group.border.bottom  .color *\/\n}<\/p>\n<p>#osjojorroc .gt_striped tr:nth-child(even) {\n  background-color: #f2f2f2;\n}<\/p>\n<p>#osjojorroc .gt_row {\n  padding: 10px;\n  \/* row.padding *\/\n  margin: 10px;\n}<\/p>\n<p>#osjojorroc .gt_stub {\n  border-right-style: solid;\n  border-right-width: 2px;\n  border-right-color: #A8A8A8;\n  text-indent: 5px;\n}<\/p>\n<p>#osjojorroc .gt_stub.gt_row {\n  background-color: #FFFFFF;\n}<\/p>\n<p>#osjojorroc .gt_summary_row {\n  background-color: #FFFFFF;\n  \/* summary_row.background.color <em>\/\n  padding: 6px;\n  \/<\/em> summary_row.padding <em>\/\n  text-transform: inherit;\n  \/<\/em> summary_row.text_transform *\/\n}<\/p>\n<p>#osjojorroc .gt_first_summary_row {\n  border-top-style: solid;\n  border-top-width: 2px;\n  border-top-color: #A8A8A8;\n}<\/p>\n<p>#osjojorroc .gt_table_body {\n  border-top-style: solid;\n  \/* field.border.top.style <em>\/\n  border-top-width: 2px;\n  \/<\/em> field.border.top.width <em>\/\n  border-top-color: #A8A8A8;\n  \/<\/em> field.border.top.color <em>\/\n  border-bottom-style: solid;\n  \/<\/em> field.border.bottom.style <em>\/\n  border-bottom-width: 2px;\n  \/<\/em> field.border.bottom.width <em>\/\n  border-bottom-color: #A8A8A8;\n  \/<\/em> field.border.bottom.color *\/\n}<\/p>\n<p>#osjojorroc .gt_footnote {\n  font-size: 90%;\n  \/* footnote.font.size <em>\/\n  padding: 4px;\n  \/<\/em> footnote.padding *\/\n}<\/p>\n<p>#osjojorroc .gt_sourcenote {\n  font-size: 90%;\n  \/* sourcenote.font.size <em>\/\n  padding: 4px;\n  \/<\/em> sourcenote.padding *\/\n}<\/p>\n<p>#osjojorroc .gt_center {\n  text-align: center;\n}<\/p>\n<p>#osjojorroc .gt_left {\n  text-align: left;\n}<\/p>\n<p>#osjojorroc .gt_right {\n  text-align: right;\n  font-variant-numeric: tabular-nums;\n}<\/p>\n<p>#osjojorroc .gt_font_normal {\n  font-weight: normal;\n}<\/p>\n<p>#osjojorroc .gt_font_bold {\n  font-weight: bold;\n}<\/p>\n<p>#osjojorroc .gt_font_italic {\n  font-style: italic;\n}<\/p>\n<p>#osjojorroc .gt_super {\n  font-size: 65%;\n}<\/p>\n<p>#osjojorroc .gt_footnote_glyph {\n  font-style: italic;\n  font-size: 65%;\n}\n<\/style>\n<div id=\"osjojorroc\"><!--gt table start--><\/p>\n<table class='gt_table'>\n<tr>\n<th class='gt_col_heading gt_left' rowspan='1' colspan='1'>CN<\/th>\n<th class='gt_col_heading gt_right' rowspan='1' colspan='1'>n<\/th>\n<th class='gt_col_heading gt_right' rowspan='1' colspan='1'>pct<\/th>\n<\/tr>\n<tbody class='gt_table_body gt_striped'>\n<tr>\n<td class='gt_row gt_left'>DST Root CA X3                          <\/td>\n<td class='gt_row gt_right'>96<\/td>\n<td class='gt_row gt_right'>26.82%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>COMODO RSA Certification Authority      <\/td>\n<td class='gt_row gt_right'>93<\/td>\n<td class='gt_row gt_right'>25.98%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>DigiCert Global Root G2                 <\/td>\n<td class='gt_row gt_right'>45<\/td>\n<td class='gt_row gt_right'>12.57%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Baltimore CyberTrust Root               <\/td>\n<td class='gt_row gt_right'>30<\/td>\n<td class='gt_row gt_right'>8.38%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>GlobalSign                              <\/td>\n<td class='gt_row gt_right'>27<\/td>\n<td class='gt_row gt_right'>7.54%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>DigiCert Global Root CA                 <\/td>\n<td class='gt_row gt_right'>15<\/td>\n<td class='gt_row gt_right'>4.19%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Go Daddy Root Certificate Authority &#8211; G2<\/td>\n<td class='gt_row gt_right'>14<\/td>\n<td class='gt_row gt_right'>3.91%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>COMODO ECC Certification Authority      <\/td>\n<td class='gt_row gt_right'>11<\/td>\n<td class='gt_row gt_right'>3.07%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Actalis Authentication Root CA          <\/td>\n<td class='gt_row gt_right'>9<\/td>\n<td class='gt_row gt_right'>2.51%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>GlobalSign Root CA                      <\/td>\n<td class='gt_row gt_right'>4<\/td>\n<td class='gt_row gt_right'>1.12%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Amazon Root CA 1                        <\/td>\n<td class='gt_row gt_right'>3<\/td>\n<td class='gt_row gt_right'>0.84%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Let&#8217;s Encrypt Authority X3              <\/td>\n<td class='gt_row gt_right'>3<\/td>\n<td class='gt_row gt_right'>0.84%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>AddTrust External CA Root               <\/td>\n<td class='gt_row gt_right'>2<\/td>\n<td class='gt_row gt_right'>0.56%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>DigiCert High Assurance EV Root CA      <\/td>\n<td class='gt_row gt_right'>2<\/td>\n<td class='gt_row gt_right'>0.56%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>USERTrust RSA Certification Authority   <\/td>\n<td class='gt_row gt_right'>2<\/td>\n<td class='gt_row gt_right'>0.56%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>GeoTrust Global CA                      <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>SecureTrust CA                          <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><!--gt table end-->\n<\/div>\n<p><!--\/html_preserve--><\/p>\n<p><code>DST Root CA X3<\/code> is (wait for it) <em>Let&#8217;s Encrypt<\/em>! Now, Comodo is not far behind  and indeed surpasses LE if we combine the extra-special &#8220;enhanced&#8221; versions they provide and it&#8217;s important for you to read the comments near the lines of code making assumptions about order of returned issuer information above. Now, let&#8217;s take a look at intermediaries:<\/p>\n<pre><code class=\"language-r\">unnest(recent, inter) %&gt;%\n  distinct(phish_id, apex, CN) %&gt;%\n  count(CN, sort = TRUE) %&gt;%\n  mutate(pct = n\/sum(n)) %&gt;%\n  gt::gt() %&gt;%\n  gt::fmt_number(\"n\", decimals = 0) %&gt;%\n  gt::fmt_percent(\"pct\")\n<\/code><\/pre>\n<div id=\"wbnkudgpgl\"><!--gt table start--><\/p>\n<table class='gt_table'>\n<tr>\n<th class='gt_col_heading gt_left' rowspan='1' colspan='1'>CN<\/th>\n<th class='gt_col_heading gt_right' rowspan='1' colspan='1'>n<\/th>\n<th class='gt_col_heading gt_right' rowspan='1' colspan='1'>pct<\/th>\n<\/tr>\n<tbody class='gt_table_body gt_striped'>\n<tr>\n<td class='gt_row gt_left'>Let&#8217;s Encrypt Authority X3                         <\/td>\n<td class='gt_row gt_right'>99<\/td>\n<td class='gt_row gt_right'>27.65%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>cPanel\\, Inc. Certification Authority             <\/td>\n<td class='gt_row gt_right'>75<\/td>\n<td class='gt_row gt_right'>20.95%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>RapidSSL TLS RSA CA G1                             <\/td>\n<td class='gt_row gt_right'>45<\/td>\n<td class='gt_row gt_right'>12.57%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Google Internet Authority G3                       <\/td>\n<td class='gt_row gt_right'>24<\/td>\n<td class='gt_row gt_right'>6.70%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>COMODO RSA Domain Validation Secure Server CA      <\/td>\n<td class='gt_row gt_right'>20<\/td>\n<td class='gt_row gt_right'>5.59%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>CloudFlare Inc ECC CA-2                            <\/td>\n<td class='gt_row gt_right'>18<\/td>\n<td class='gt_row gt_right'>5.03%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Go Daddy Secure Certificate Authority &#8211; G2         <\/td>\n<td class='gt_row gt_right'>14<\/td>\n<td class='gt_row gt_right'>3.91%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>COMODO ECC Domain Validation Secure Server CA 2    <\/td>\n<td class='gt_row gt_right'>11<\/td>\n<td class='gt_row gt_right'>3.07%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Actalis Domain Validation Server CA G1             <\/td>\n<td class='gt_row gt_right'>9<\/td>\n<td class='gt_row gt_right'>2.51%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>RapidSSL RSA CA 2018                               <\/td>\n<td class='gt_row gt_right'>9<\/td>\n<td class='gt_row gt_right'>2.51%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Microsoft IT TLS CA 1                              <\/td>\n<td class='gt_row gt_right'>6<\/td>\n<td class='gt_row gt_right'>1.68%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Microsoft IT TLS CA 5                              <\/td>\n<td class='gt_row gt_right'>6<\/td>\n<td class='gt_row gt_right'>1.68%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>DigiCert SHA2 Secure Server CA                     <\/td>\n<td class='gt_row gt_right'>5<\/td>\n<td class='gt_row gt_right'>1.40%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Amazon                                             <\/td>\n<td class='gt_row gt_right'>3<\/td>\n<td class='gt_row gt_right'>0.84%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>GlobalSign CloudSSL CA &#8211; SHA256 &#8211; G3               <\/td>\n<td class='gt_row gt_right'>2<\/td>\n<td class='gt_row gt_right'>0.56%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>GTS CA 1O1                                         <\/td>\n<td class='gt_row gt_right'>2<\/td>\n<td class='gt_row gt_right'>0.56%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>AlphaSSL CA &#8211; SHA256 &#8211; G2                          <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>DigiCert SHA2 Extended Validation Server CA        <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>DigiCert SHA2 High Assurance Server CA             <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>Don Dominio \/ MrDomain RSA DV CA                   <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>GlobalSign Extended Validation CA &#8211; SHA256 &#8211; G3    <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>GlobalSign Organization Validation CA &#8211; SHA256 &#8211; G2<\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>RapidSSL SHA256 CA                                 <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>TrustAsia TLS RSA CA                               <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>USERTrust RSA Domain Validation Secure Server CA   <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<tr>\n<td class='gt_row gt_left'>NA                                                 <\/td>\n<td class='gt_row gt_right'>1<\/td>\n<td class='gt_row gt_right'>0.28%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><!--gt table end-->\n<\/div>\n<p>LE is number one again! But, it&#8217;s important to note that these <a href=\"https:\/\/docs.oracle.com\/cd\/E24191_01\/common\/tutorials\/authz_cert_attributes.html\">issuer <code>CommonName<\/code>s<\/a> can roll up into a single issuing organization given just how messed up integrity and encryption capability is when it comes to web site certs, so the raw results could do with a bit of post-processing for a more complete picture (an exercise left to intrepid readers).<\/p>\n<h3>FIN<\/h3>\n<p>There are <em>tons<\/em> of avenues to explore with this data, so I hope this post whet your collective appetites sufficiently for you to dig into it, especially if you have some dowm-time coming.<\/p>\n<p>Let me also take this opportunity to resissue guidance I and many others have uttered this holiday season: be <em>super careful<\/em> about what you click on, which sites you even just visit, and just how much you <em>really<\/em> trust the site, provider and entity behind the form about to enter your personal information and credit card info into.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Phishing is [still] the primary way attackers either commit a primary criminal act (i.e. phish a target to, say, install ransomware) or is the initial vehicle used to gain a foothold in an organization so they can perform other criminal operations to achieve some goal. As such, security teams, vendors and active members of the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[681,70,3,91],"tags":[],"class_list":["post-11685","post","type-post","status-publish","format-standard","hentry","category-cybersecurity","category-encryption","category-information-security","category-r"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Certifiably Gone Phishing - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Certifiably Gone Phishing - rud.is\" \/>\n<meta property=\"og:description\" content=\"Phishing is [still] the primary way attackers either commit a primary criminal act (i.e. phish a target to, say, install ransomware) or is the initial vehicle used to gain a foothold in an organization so they can perform other criminal operations to achieve some goal. As such, security teams, vendors and active members of the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-23T22:28:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-12-23T22:28:47+00:00\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/12\\\/23\\\/certifiably-gone-phishing\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/12\\\/23\\\/certifiably-gone-phishing\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Certifiably Gone Phishing\",\"datePublished\":\"2018-12-23T22:28:00+00:00\",\"dateModified\":\"2018-12-23T22:28:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/12\\\/23\\\/certifiably-gone-phishing\\\/\"},\"wordCount\":1427,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"articleSection\":[\"Cybersecurity\",\"Encryption\",\"Information Security\",\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/12\\\/23\\\/certifiably-gone-phishing\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/12\\\/23\\\/certifiably-gone-phishing\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/12\\\/23\\\/certifiably-gone-phishing\\\/\",\"name\":\"Certifiably Gone Phishing - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"datePublished\":\"2018-12-23T22:28:00+00:00\",\"dateModified\":\"2018-12-23T22:28:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/12\\\/23\\\/certifiably-gone-phishing\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/12\\\/23\\\/certifiably-gone-phishing\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/12\\\/23\\\/certifiably-gone-phishing\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Certifiably Gone Phishing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rud.is\\\/b\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\\\/\\\/rud.is\"],\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/author\\\/hrbrmstr\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Certifiably Gone Phishing - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/","og_locale":"en_US","og_type":"article","og_title":"Certifiably Gone Phishing - rud.is","og_description":"Phishing is [still] the primary way attackers either commit a primary criminal act (i.e. phish a target to, say, install ransomware) or is the initial vehicle used to gain a foothold in an organization so they can perform other criminal operations to achieve some goal. As such, security teams, vendors and active members of the [&hellip;]","og_url":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/","og_site_name":"rud.is","article_published_time":"2018-12-23T22:28:00+00:00","article_modified_time":"2018-12-23T22:28:47+00:00","author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Certifiably Gone Phishing","datePublished":"2018-12-23T22:28:00+00:00","dateModified":"2018-12-23T22:28:47+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/"},"wordCount":1427,"commentCount":3,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"articleSection":["Cybersecurity","Encryption","Information Security","R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/","url":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/","name":"Certifiably Gone Phishing - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"datePublished":"2018-12-23T22:28:00+00:00","dateModified":"2018-12-23T22:28:47+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2018\/12\/23\/certifiably-gone-phishing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Certifiably Gone Phishing"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p23idr-32t","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":5819,"url":"https:\/\/rud.is\/b\/2017\/04\/17\/when-homoglyphs-attack-generating-phishing-domain-names-with-r\/","url_meta":{"origin":11685,"position":0},"title":"When Homoglyphs Attack! Generating Phishing Domain Names with R","author":"hrbrmstr","date":"2017-04-17","format":false,"excerpt":"It's likely you've seen the news regarding yet-another researcher showing off a phishing domain attack. The technique is pretty simple: find a target domain you want to emulate register a homoglpyh version of it use the hacker's favorite tool, Let's Encrypt to serve it up with a nice, shiny green\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10257,"url":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/","url_meta":{"origin":11685,"position":1},"title":"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report","author":"hrbrmstr","date":"2018-05-08","format":false,"excerpt":"The U.S. FBI Internet Crime Complaint Center was established in 2000 to receive complaints of Internet crime. They produce an annual report, just released 2017's edition, and I need the data from it. Since I have to wrangle it out, I thought some folks might like to play long at\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=1200%2C771&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=1200%2C771&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=1200%2C771&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=1200%2C771&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=1200%2C771&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":563,"url":"https:\/\/rud.is\/b\/2011\/06\/14\/weis-2011-keynote-dr-christopher-greer\/","url_meta":{"origin":11685,"position":2},"title":"WEIS 2011 :: Keynote :: Dr Christopher Greer","author":"hrbrmstr","date":"2011-06-14","format":false,"excerpt":"Dr Greer [cgreer at ostp.eop.gov] is Assistant Director, Information Technology R&D, Office of Science & Technology Policy, The White House Opening: \"The expertise of the attendees is greatly needed.\" He provided a broad overview of the goals & initiatives of the federal government as they relate to domestic & international\u2026","rel":"","context":"In &quot;Information Security&quot;","block_context":{"text":"Information Security","link":"https:\/\/rud.is\/b\/category\/information-security\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10800,"url":"https:\/\/rud.is\/b\/2018\/05\/24\/gdpr-unintended-consequences-part-1-increasing-wordpress-blog-exposure\/","url_meta":{"origin":11685,"position":3},"title":"GDPR Unintended Consequences Part 1 \u2014 Increasing WordPress Blog Exposure","author":"hrbrmstr","date":"2018-05-24","format":false,"excerpt":"I pen this mini-tome on \"GDPR Enforcement Day\". The spirit of GDPR is great, but it's just going to be another Potempkin Village in most organizations much like PCI or SOX. For now, the only thing GDPR has done is made GDPR consulting companies rich, increased the use of javascript\u2026","rel":"","context":"In &quot;Commentary&quot;","block_context":{"text":"Commentary","link":"https:\/\/rud.is\/b\/category\/commentary\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2225,"url":"https:\/\/rud.is\/b\/2013\/03\/03\/security-hobos\/","url_meta":{"origin":11685,"position":4},"title":"Security Hobos","author":"hrbrmstr","date":"2013-03-03","format":false,"excerpt":"If you haven't viewed\/read Wendy Nather's (@451Wendy) insightful [Living Below The Security Poverty Line](https:\/\/451research.com\/t1r-insight-living-below-the-security-poverty-line) you really need to do that before continuing (we'll still be here when you get back). Unfortunately, the catalyst for this post came from two recent, real-world events: my returned exposure to the apparent ever-increasing homeless\u2026","rel":"","context":"In &quot;Breach&quot;","block_context":{"text":"Breach","link":"https:\/\/rud.is\/b\/category\/breach\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":25386,"url":"https:\/\/rud.is\/b\/2025\/05\/14\/suriest-suricata-rule-validation-as-a-rest-service\/","url_meta":{"origin":11685,"position":5},"title":"Suriest: Suricata Rule Validation As A (REST) Service","author":"hrbrmstr","date":"2025-05-14","format":false,"excerpt":"Meet Suriest \u2014 a new REST API service for validating Suricata rules, designed to be run by organizations to streamline rule validation workflows. Suriest supports Suricata 6.0 and later and offers features like secure configuration, S3-compatible storage for logging validation attempts, and a simple HTTP API to validate rules programmatically.\u2026","rel":"","context":"In &quot;Cybersecurity&quot;","block_context":{"text":"Cybersecurity","link":"https:\/\/rud.is\/b\/category\/cybersecurity\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/11685","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=11685"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/11685\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=11685"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=11685"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=11685"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}