For your question to make sense, you must first specify in what terms (parameters) you wish to express your extension. Let us fix notations : $K$ is a number field, $S$ is a finite set of places containing those above a fixed prime $p$ ; denote by $G_S (K)$ the Galois group over $K$ of the maximal $S$-ramified algebraic extension of $K$, $X_S (K)$ its maximal abelian pro-$p$-quotient, $Y_S (K)$ its maximal abelian quotient of exponent $p$. Then :
1° In principle, for any $S$, $G_S ^{ab} (K)$ can be described in terms of ray class fields or of idèle classes, see e.g. https://math.stackexchange.com/a/1898156/300700 . But because of its generality, the expression is not very enlightening, and must be adapted to the particular problem that you want to study.
2° In your setting here, since the prime $p$ plays a central role, the "best" parameters adapted to $X_S (K)$ are the couple ($S$- units, $S$-ideal classes). Precisely, there is the so called decomposition exact sequence of CFT : $1 \to \delta_S (K) \to E_S (K) \otimes \mathbf Z_p \to \oplus \mathscr K_v \to X_S (K) \to A_S (K) \to 1$, where $\mathscr K_v$ denotes the pro-$p$-completion of the local multiplicative group $K_v^{*}$ for all $v \in S$, and $A_S (K)$ is the $p$-part of the $S$-ideal class group. The lefmost morphism is induced by the natural diagonal mapping, and its kernel $\delta_S (K)$ is the Leopoldt kernel, conjecturally null. This gives a first reasonable approach to $X_S (K)$, but with two pending big arithmetic parameters:
- the Leopoldt conjecture, which is proved only for abelian fields (a theorem of Brumer)
- the $\mathbf Z_p$-torsion $T(S)_K$ of $X(S)_K$: Leopoldt's conjecture tells us that the $\mathbf Z_p$-rank of $X(S)_K$ is $1+r_2$ , but the genuine arithmetic interest lies in $T(S)_K$, which is related in a surprising and deep way to the $p$-adic L-functions attached to $K$ in the totally real case (Iwasawa theory)
3° Coming to the mod $p$ quotient $Y_S (K)$, things become much easier because part of the arithmetic disappears. In Galois theoretic terms, to describe $Y_S (K)$ is the same as to describe its dual $Hom (Y_S (K), \mathbf Z /p{\mathbf Z} ) = Hom (X_S (K), \mathbf Z /p {\mathbf Z})= Hom(G_S (K),{\mathbf Z} /p {\mathbf Z}) $. This can be done using Kummer theory. Suppose $p$ odd for simplification. Then, introducing $L=K(\zeta_p)$, the Galois group $\Delta$ of $L/K$ has order prime to $p$, which implies at once that $Hom(G_S (K),{\mathbf Z} /p{\mathbf Z}) = Hom(G_S (L),{\mathbf Z} /p{\mathbf Z})^{\Delta}$. Since $G_S (L)$ (but not $\Delta$) acts trivially on $\zeta_p $, one can easily check that $Hom(G_S (K),{\mathbf Z} /p{\mathbf Z})= e_{-1}Hom(G_S (L) , <\zeta_p>)$ , where $e_{-1}$ is the idempotent corresponding to the character $-1$ of $\Delta$. So it remains only to determine $Hom(G_S (L), <\zeta_p>)$, for which one has the so called Kummer exact sequence (in this context of $S$-ramification) $1 \to E_S (L)/ E_S (L)^p \to Hom(G_S (L), <\zeta_p>) \to A_S (L)[p] \to 1$ , where $(.)[p]$ denotes the kernel of the multiplication by $p$. Note that the parameters in play remain the couple $e_{-1}$($S$- units, $S$-ideal classes) of $L$. They become parameters attached to $\mathbf Q(\zeta_p)$ in the case $K = \mathbf Q$: this makes precise the intervention of Kronecker-Weber pointed out by @Mathmo ./.