Live data from Hacker News

Brute.Fail: Watch brute force attacks fail in real time

brute.fail

41–50 of 268 posts

Re: Brute.Fail: Watch brute force attacks fail in real time

#42
post #11

Earlier quoted context omitted.

it bugs me that they're not trying the passwords in lexigraphical order :-D also, who has sshd without `PermitRootPassword=no`? they need to broaden their horizons and try `admin`, `ec2-user`, and `ubuntu` /s

Even if you disallow root login with a password, the user can still try to log in, and the attempt still gets logged If you're asking why it would ever be worth it, there's always valuable stuff online with incompetent configuration. I don't know if shodan is still up, but I remember going on there in high school and getting access to random webcams (sometimes in peoples' homes)

https://www.shodan.io/ is still up, if that's what you mean.

Re: Brute.Fail: Watch brute force attacks fail in real time

#43
post #32
post #10

Earlier quoted context omitted.

It is escaped server side. Anything long enough to be a useful payload is trimmed.

How short we talking? Since there's multiple opportunities to inject code, it's possible to split out the payload across multiple fields: https://www.highseverity.com/2011/06/xss-in-confined-spaces.... Ten characters per block is enough for: /* */eval(/* */'....'+/* */'....'+/* */'....'+/* ... */)/* */ Best to escape everything at render time.

Everything is escaped server side before it is sent to the client. Shoot me an email and I will let you play with it after the HN traffic dies down.

Re: Brute.Fail: Watch brute force attacks fail in real time

#46

For this reason I've put `endlessh` on port 22 and moved actual ssh elsewhere... Also started using Crowdsec recently, but not sure about if it's worth it... fail2ban out of the box works fine for SSH, but for dovecot and postfix it's somehow broken, and the configuration scripts are just too obtuse.

Nice idea. From the docs: Endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server. Since the tarpit is in the banner before any cryptographic exchange occurs, this program doesn't…

Wow. That is pretty brilliant.

Re: Brute.Fail: Watch brute force attacks fail in real time

#47
post #17
post #9

I kinda want to know the server's address so I can send a "hello_hn" message in the passwords there.

I tried the IP resolved by the domain "brute.fail" but it doesn't accept SSH connections :)

The Internet is not that big, though. You could potentially try all 2^32 IPv4 addresses with your password of choice and see when it came up here.

Re: Brute.Fail: Watch brute force attacks fail in real time

#49
post #9

I kinda want to know the server's address so I can send a "hello_hn" message in the passwords there.

Upthread the author says one of the three servers is in Digital Ocean, which gives you an AS to target. Reverse engineer the web page so you can capture the websocket to your terminal, grep it for your IP, and search all of DO's ipv4 address space. use Shodan to limit your targets to only machines with an open port 22 to make it go faster.

Re: Brute.Fail: Watch brute force attacks fail in real time

#50
A remark on your fail.js, since you’re engaging here and I figure this could interest you or others:

Once there are more than thirty rows, you fade rows in like this:

  row.style.opacity = 0;
  let intervalId = setInterval(function() {
      opacity = Number(window.getComputedStyle(row).getPropertyValue("opacity"));
      if (opacity 
This would be better done with a CSS animation or transition—it takes less code, and is smoother.

My suggestion: use animation. Replace the JavaScript with this:

  row.classList.add("fade-in");
And add this CSS:

  .fade-in {
      animation: 1s fade-in;
  }

  @keyframes fade-in {
      from { opacity: 0; }
  }
This does behave a little differently, as if the window isn’t visible, it’ll (roughly) wait until you focus the window before playing the animation. Frankly this is even mildly more desirable.

The alternative: use transitions, which are a tad more involved because you have to trigger the value change one frame later, so that it recognises that something has changed and interpolates to it, rather than it just being the initial value and applied instantly. This JS would do:

  row.style.transition = "1s opacity";
  row.style.opacity = 0;
  requestAnimationFrame(() => {
      row.style.opacity = 1;
  });
Or you could express it with more CSS, like with this CSS + JS:

  tr {
      transition: 1s opacity;
  }

  .invisible {
      opacity: 0;
  }

  row.classList.add("invisible");
  requestAnimationFrame(() => {
      row.classList.remove("invisible");
  });
—⁂—

You might also like `vertical-align: middle` on your spin.svg.

—⁂—

On the flag icons, here’s a cool alternative technique: https://en.wikipedia.org/wiki/Regional_indicator_symbol. Lets you avoid needing even images. Unfortunately, I think Windows still doesn’t ship flags, so you’ll get the two-letter country code there. You can get around this by packaging a web font. It’d be nice if someone would neatly package a flags-only font so others can easily use it. Here’s what I did a few months back for https://ganintegrity.com/country-profiles/, resulting in a single 77KB font file:

  /**
  Copyright 2020 Twitter, Inc and other contributors
  Graphics licensed under CC-BY 4.0: https://creativecommons.org/licenses/by/4.0/
  Twemoji Mozilla packaging via https://github.com/mozilla/twemoji-colr, subset to only include country flags.
  */
  @font-face {
      font-family: flag;
      /* (Generated with `pyftsubset /opt/firefox-nightly/fonts/TwemojiMozilla.ttf --unicodes="U+1F1E6-1F1FF" --output-file=static/TwemojiMozillaFlags.woff2 --flavor=woff2`.) */
      src: url(/static/TwemojiMozillaFlags.woff2) format("woff2");
  }
  
  /* Why do we do this? Because at the time of writing Windows doesn’t do flags, so ‹guzzled by HN› will look like “ᴀᴜ” rather than an Australian flag. (macOS and major browsers on Linux do.) */
  .flag {
      font-family: flag;
  }
Post reply on HN