- Hakowanie gówna z KQL【ツ】
Mniej więcej latem zeszłego roku pożegnałem się z malowniczymi górami północno-zachodniego Pacyfiku i przywitałem się z płaską ponurą Holandią. Ale chociaż przyroda tutaj nie istnieje, wszystko inne było dokładnie tym, czego potrzebowałem po króliczej norze 2021/2. Jednym z tych pozytywów była nowa praca w nowo uruchomionym SOC, który w pełni wkupił się w Microsoft Security Stack .
Microsoft Sentinel (dawniej Azure Sentinel) to natywna dla chmury platforma do zarządzania informacjami o zabezpieczeniach i zdarzeniami (SIEM), która używa języka zapytań Kusto do wyszukiwania i analizowania danych w Sentinel i innych usługach platformy Azure. Jeśli znasz SQL, KQL powinien wydawać się znajomy, ale jak się dowiedziałem, istnieje kilka kluczowych różnic i zaawansowanych funkcji, które mogą pomóc Ci w pełni wykorzystać dane.
Tak więc, bez dalszego dopełniania liczby słów, daję ci 5 naprawdę przydatnych wskazówek i sztuczek dla Kusto-ing, takich jak Hacker Bill.
1. Operator analizy umożliwia wyodrębnianie danych z łańcuchów przy użyciu zestawu wyrażeń regularnych. Może to być szczególnie przydatne podczas pracy z danymi dziennika, które często zawierają informacje zakodowane w złożony sposób. Możesz na przykład użyć analizy składni, aby wyodrębnić adres IP z wpisu dziennika, który zawiera go jako część większego ciągu.
// Extract the IP address from a log entry that includes it as part of a larger string
let log_entry = "User logged in from IP address: 192.168.1.1";
let ip_address = parse(log_entry, "IP address: (\\d+.\\d+.\\d+.\\d+)");
// Add a column that calculates the percentage change in some metric from one day to the next
let data = datatable(date:datetime, value:int)
[ datetime(2020-01-01), 100, datetime(2020-01-02), 105, datetime(2020-01-03), 110];
data
| extend pct_change = (value - lag(value)) / lag(value)
| project date, value, pct_change
// Group data by user and count the number of events each user generated
let data = datatable(user:string, event:string)
[
"User 1", "Event 1",
"User 1", "Event 2",
"User 2", "Event 3",
"User 2", "Event 4",
"User 3", "Event 5"
];
data
| summarize count() by user
// Create a line chart that shows the number of events per hour over the course of a day
let data = datatable(timestamp:datetime, event:string)
[ datetime(2020-01-01 01:00), "Event 1", datetime(2020-01-01 02:00), "Event 2", datetime(2020-01-01 03:00), "Event 3", datetime(2020-01-01 04:00), "Event 4", datetime(2020-01-01 05:00), "Event 5"];
data
| make-series count() on timestamp in range(datetime(2020-01-01), datetime(2020-01-01 23:59), 1h) by event
// Combine data from a log file with data from a user database, based on the user's ID
let log_data = datatable(user_id:int, event:string)
[
1, "Event 1",
2, "Event 2",
3, "Event 3"
];
let user_data = datatable(user_id:int, name:string)
[
1, "John Smith",
2, "Jane Doe",
3, "Bob Johnson"
];
log_data
| join user_data on user_id
| project name, event

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































