Hello, Worm!: bash 스크립트로 SSH 프로브 매핑

5608 단어 bashsecuritylinux
이것은 진지한 보안 조언보다 더 재미있는 것을 의미합니다.

TLDR Pages에 기여하면서 lastb와 같은 흥미롭고 유용한 수많은 명령을 소개받았습니다. 이 명령은 실패한 로그인 시도의 세부 정보를 보여줍니다. 물론 익숙하지 않은 자료에 대해 좋은 지침을 작성할 수 없기 때문에 AWS VM 중 하나에서 실행lastb -iw하고 다소 불쾌한 놀라움을 얻었습니다.

AWS_VM: sudo lastb -iw | wc -l 
967

967 로그인 실패? 나는 공개 키로 인증하기 때문에 이것이 내가 아니라는 것을 압니다. 이 VM에는 애프터마켓 CNAME 또는 공개된 IP 주소가 없기 때문에 이것이 표적 공격인지 의심스럽습니다. 비행 중에 정말 이렇게 많은 봇넷이 있습니까?

GCP의 좋은 사람들은 문자열이 없는 마이크로 VM을 무료로 제공합니다. 하나를 프로비저닝하고 SSH에 대해 프로브되기 전에 방해받지 않는 시간을 확인하십시오.

GCP_VM: uptime
22:21:47 up 5 min,  1 user,  load average: 0.00, 0.00, 0.00
GCP_VM: lastb | wc -l 
2

글쎄, 이것은 암울한 발전입니다: 첫 번째 SSH 프로브까지 5분 남았습니다. 나는 이 사람들이 어디에서 왔는지 알고 싶지만 전용 허니팟에 내 (매우) 제한된 리소스를 낭비하고 싶지 않습니다. 이미 실행 중인 VM에서 가벼운 데이터 수집을 시도해 보겠습니다.

너의 무기를 골라라



• bash 및 awk는 Linux 기반의 일부로 간주될 수 있습니다.
• curl은 대화형 VM에서 매우 흔합니다.
https://mapbox.io 무료 등급으로 SVG 매핑 API를 기꺼이 제공합니다.
https://ipstack.com 무료 등급으로 IP 주소 지리적 위치 API를 제공합니다.

이러한 API 공급자의 선의를 압도하지 않도록 지난 24시간 동안 VM을 검색한 IP로 쿼리를 제한합니다.

#!/bin/bash

# Set token data here. Because requests want a token in the URL,
# a .netrc file can't be used to store credentials
#
IPSTACK_TOKEN=""
MAPBOX_TOKEN=""

# Get a timestamp of 24 hours ago in epoch seconds
#
STANDOFF=$(date -d "24 hours ago" +%s)

# Capture failed logins with a timestamp < 24-hours-ago to a buffer file
#
sudo lastb -i | awk '{ print $3,$5,$6,$7 }' | while read ip datum
do
  [[ "$(date -d "$datum" +%s)" -gt "$STANDOFF" ]] && echo -e "$ip"
done > /tmp/LASTB_IP_BUFFER

# Get the top 150 IPs by connection count
sort /tmp/LASTB_IP_BUFFER | uniq -c | sort -rnk1 | awk '{ print $2,$1 }' | head -150 | while read IP time
do
    # Get Lat/Long data
    curl -s "http://api.ipstack.com/$IP?access_key=$IPSTACK_TOKEN&fields=longitude,latitude" | python -m json.tool | awk '/longitude|latitude/ { printf $NF" " }' | tr -d "," | awk '$1 != "null" { print "pin-s+0FF("$2","$1")," }'

# Smush all coordinates into a string to make a single call to Mapbox.io
done | tr -d "\n" | sed -e 's/,$//g' > /tmp/coords

curl -s "https://api.mapbox.com/styles/v1/mapbox/dark-v10/static/"$(cat /tmp/coords)"/0,40,1.35,0/1280x1024?access_token=$MAPBOX_TOKEN" > worms.png

rm /tmp/LASTB_IP_BUFFER /tmp/coords

그리고 여기 우리는 모든 프로빙 봇넷의 소스 IP 위치에 핀이 꽂혀 있는 멋진 세계 지도가 있습니다. 상사를 프레이밍하거나 겁주기에 적합합니다.

좋은 웹페이지 즐겨찾기